home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / UTILITY / INTER29A.ARJ / INTERRUP.A < prev    next >
Text File  |  1992-02-09  |  218KB  |  5,751 lines

  1. Interrupt List        Release 29            Last change 2/9/92
  2. This compilation is Copyright (c) 1989, 1990, 1991, 1992 Ralf Brown
  3. ---------------------------------------------
  4. Please redistribute the following files unmodified as a group, in a pair of
  5. archives named INTER29A and INTER29B (preferably the original authenticated
  6. PKZIP archives):
  7.     INTERRUP.1ST    the read-me file, containing credits, availability info
  8.     INTERRUP.A    INT 00 through INT 14   \
  9.     INTERRUP.B    INT 15 through INT 1F    \  total 716 pages at
  10.     INTERRUP.C    INT 20 thru INT 21/7F     \ 60 lines per page,
  11.     INTERRUP.D    INT 21/80 thru INT 2F/7F  / 767 with INTPRINT -p
  12.     INTERRUP.E      INT 2F/80 thru INT 5F    /  (3232 entries)
  13.     INTERRUP.F    INT 60 through INT FF   /
  14.     INTERRUP.PRI    a brief introduction to interrupts
  15.     INTPRINT.COM    a simple formatter that also generates a list summary
  16.     INTPRINT.DOC    instructions for INTPRINT
  17.     INTPRINT.C    source code for INTPRINT
  18.     MEMORY.LST    format of the BIOS data area
  19. The following files should be distributed in an archive called INTER28C (they
  20. have not been updated since Release 28):
  21.     INT2HLP.BAT    Perl script to convert list into QuickHelp database
  22.     INT2GUID.*    convert list into TurboPower GUIDE or POPHELP database
  23.     INT2QH.*    program to convert list into QuickHelp database
  24.     INTHELP.*    convert list into TurboPower GUIDE database
  25. ---------------------------------------------
  26. If you notice any mistakes or omissions, please let me know!  It is only with
  27. YOUR help that the list can continue to grow at the current rate.  Please send
  28. all changes to me rather than distributing a modified version of the list.
  29.  
  30. Please read the file INTERRUP.1ST before asking me any questions.  You may find
  31. that they have already been addressed.
  32.  
  33.      Ralf Brown
  34.  
  35. ARPA: ralf@cs.cmu.edu
  36. UUCP: {ucbvax,harvard}!cs.cmu.edu!ralf
  37. BIT:  ralf%cs.cmu.edu@cmuccvma
  38. FIDO: Ralf Brown 1:129/26.1
  39.     or post a message to me in the DR_DEBUG echo
  40. CIS:  >INTERNET:ralf@cs.cmu.edu 
  41.  
  42. I reply to all e-mail submissions and inquiries, but some of my replies bounce
  43. because of bad return paths.  If you don't get a response from me within a
  44. reasonable period of time, send it again with a better return path (starting at
  45. harvard or ucbvax for UUCP, from the ARPA Internet for others).
  46. ---------------------------------------------
  47. See INTERRUP.1ST for the key to system abbreviations and a list of the
  48. trademarks mentioned here.
  49. ---------------------------------------------
  50. DISCLAIMER:  THIS MATERIAL IS PROVIDED "AS IS".     I verify the information
  51. contained in this list to the best of my ability, but I cannot be held
  52. responsible for any problems caused by use or misuse of the information,
  53. especially for those functions not officially  documented.  If it is marked
  54. "internal", you should check it carefully to make sure it works the same
  55. way in your version of the software (and please let me know whether or not
  56. it works the same way).     Information marked with "???" is known to be
  57. incomplete or guesswork.
  58. ---------------------------------------------
  59. The use of -> instead of = signifies that the indicated register or register
  60. pair contains a pointer to the specified item, rather than the item itself
  61. ----------00---------------------------------
  62. INT 00 - CPU-generated - DIVIDE ERROR
  63. Notes:    generated if the divisor of a DIV or IDIV instruction is zero or the
  64.       quotient overflows the result register; DX and AX will be unchanged.
  65.     on an 8086/8088, the return address points to the following instruction
  66.     on an 80286+, the return address points to the divide instruction
  67. SeeAlso: INT 04
  68. ----------01---------------------------------
  69. INT 01 - CPU-generated - SINGLE STEP
  70. Notes:    generated after each instruction if TF (trap flag) is set; TF is
  71.       cleared on invoking the single-step interrupt handler
  72.     interrupts are prioritized such that external interrupts are invoked
  73.       after the INT 01 pushes CS:IP/FLAGS and clears TF, but before the
  74.       first instruction of the handler executes
  75.     used by debuggers for single-instruction execution tracing, such as
  76.       MSDOS DEBUG's T command
  77. SeeAlso: INT 03
  78. ----------01---------------------------------
  79. INT 01 - CPU-generated (80386+) - DEBUGGING EXCEPTIONS
  80.    Instruction address breakpoint fault - will return to execute instruction
  81.    Data address breakpoint trap - will return to following instruction
  82.    General detect fault, debug registers in use
  83.    Task-switch breakpoint trap
  84. SeeAlso: INT 03
  85. ----------02---------------------------------
  86. INT 02 - external hardware - NON-MASKABLE INTERRUPT
  87. Notes:    generated by the CPU when the input to the NMI pin is asserted
  88.     return address points to start of interrupted instruction on 80286+
  89.     although the Intel documentation states that this interrupt is
  90.       typically used for power-failure procedures, it has many other uses
  91.       on IBM-compatible machines:
  92.         Memory parity error: all except Jr, CONV, and some machines
  93.                 without memory parity
  94.         Breakout switch on hardware debuggers
  95.         Coprocessor interrupt: all except Jr and CONV
  96.         Keyboard interrupt: Jr, CONV
  97.         I/O channel check: CONV, PS50+
  98.         Disk-controller power-on request: CONV
  99.         System suspend: CONV
  100.         Real-time clock: CONV
  101.         System watch-dog timer, time-out interrupt: PS50+
  102.         DMA timer time-out interrupt: PS50+
  103.         Low battery: HP 95LX
  104.         Module pulled: HP 95LX
  105. ----------03---------------------------------
  106. INT 03 - CPU-generated - BREAKPOINT
  107. Notes:    generated by the one-byte breakpoint instruction (opcode CCh)
  108.     used by debuggers to implement breakpoints, such as MSDOS DEBUG's G
  109.       command
  110.     also used by Turbo Pascal versions 1,2,3 when {$U+} specified
  111.     return address points to byte following the breakpoint instruction
  112. SeeAlso: INT 01
  113. ----------0309--SI4647-----------------------
  114. INT 03 - Soft-ICE BACK DOOR COMMANDS
  115.     AH = 09h
  116.     SI = 4647h ('FG')
  117.     DI = 4A4Dh ('JM')
  118.     AL = function
  119.         10h display string in Soft-ICE window
  120.         DS:DX -> ASCIZ string to display (max 100 bytes, 0Dh OK)
  121.         11h execute Soft-ICE command
  122.         DS:DX -> ASCIZ command string (max 100 bytes, 0Dh OK)
  123.         12h get breakpoint information
  124.         Return:    BH = entry number of last breakpoint set
  125.             BL = type of last breakpoint set
  126.                 00h BPM (breakpoint register types)
  127.                 01h I/O
  128.                 02h INTerrupt
  129.                 03h BPX (INT 03h-style breakpoint)
  130.                 04h reserved
  131.                 05h range
  132.             DH = entry number of last breakpoint to be triggered
  133.             DL = type of last triggered breakpoint (see above)
  134.             
  135. ----------04---------------------------------
  136. INT 04 - CPU-generated - INTO DETECTED OVERFLOW
  137. Notes:    the INTO instruction will generate this interrupt if OF (Overflow Flag)
  138.       is set; otherwise, INTO is effectively a NOP
  139.     may be used for convenient overflow testing (to prevent errors from
  140.       propagating) instead of JO or a JNO/JMP combination
  141. SeeAlso: INT 00
  142. ----------05---------------------------------
  143. INT 05 - PRINT SCREEN
  144. Notes:    normally invoked by the INT 09 handler when PrtSc key is pressed, but
  145.       may be invoked directly by applications
  146.     byte at 0050h:0000h contains status used by default handler
  147.       00h not active
  148.       01h PrtSc in progress
  149.       FFh last PrtSc encountered error
  150.     default handler is at F000h:FF54h in IBM PC and 100%-compatible BIOSes
  151. SeeAlso: INT 10/AH=12h/BL=20h
  152. ----------05---------------------------------
  153. INT 05 - CPU-generated (80186+) - BOUND RANGE EXCEEDED
  154. Notes:    generated by BOUND instruction when the value to be tested is less than
  155.       the indicated lower bound or greater than the indicated upper bound.
  156.     returning from this interrupt re-executes the failing BOUND instruction
  157. ----------06---------------------------------
  158. INT 06 - CPU-generated (80286+) - INVALID OPCODE
  159. Notes:    generated when the CPU attempts to execute an invalid opcode (most
  160.       protected-mode instructions are considered invalid in real mode)
  161.     generated on BOUND, LDS, LES, or LIDT instructions which specify a
  162.       register rather than a memory address
  163.     return address points to beginning of invalid instruction
  164.     with proper programming, this interrupt may be used to emulate
  165.       instructions which do not exist; many 386 BIOSes emulate the 80286
  166.       undocumented LOADALL instruction which was removed from the 80386+
  167. SeeAlso: INT 0C"CPU",INT 0D"CPU"
  168. ----------06---------------------------------
  169. INT 06 - HP 95LX - SLEEP/WAKEUP
  170. Note:    called just before going into light or deep (shutdown) sleep and just
  171.       after returning from light or deep sleep
  172. SeeAlso: INT 0B"HP 95LX"
  173. ----------07---------------------------------
  174. INT 07 - CPU-generated (80286+) - PROCESSOR EXTENSION NOT AVAILABLE
  175. Notes:    automatically called if a coprocessor instruction is encountered when
  176.       no coprocessor is installed
  177.     can be used to emulate a numeric coprocessor in software
  178. SeeAlso: INT 09"MATH UNIT PROTECTION"
  179. ----------08---------------------------------
  180. INT 08 - IRQ0 - SYSTEM TIMER
  181. Notes:    generated 18.2 times per second by channel 0 of the 8254 system timer,
  182.       this interrupt is used to keep the time-of-day clock updated
  183.     programs which need to be invoked regularly should use INT 1C unless
  184.       they need to reprogram the timer while still keeping the time-of-day
  185.       clock running at the proper rate
  186.     default handler is at F000h:FEA5h in IBM PC and 100%-compatible BIOSes
  187.     may be masked by setting bit 0 on I/O port 21h
  188. SeeAlso: INT 1C,INT 4A,INT 50"DESQview",INT 58"DoubleDOS",INT 70,INT 78"GO32"
  189. ----------08---------------------------------
  190. INT 08 - CPU-generated (80286+) - DOUBLE EXCEPTION DETECTED
  191. Notes:    called when multiple exceptions occur on one instruction, or an
  192.       exception occurs in an exception handler
  193.     called in protected mode if an interrupt above the defined limit of
  194.       the interrupt vector table occurs
  195.     return address points at beginning of instruction with errors or the
  196.       beginning of the instruction which was about to execute when the
  197.       external interrupt caused the exception
  198.     if an exception occurs in the double fault handler, the CPU goes into
  199.       SHUTDOWN mode (which circuitry in the PC/AT converts to a reset);
  200.       this "triple fault" is a faster way of returning to real mode on
  201.       many 80286 machines than the standard keyboard controller reset
  202. ----------09---------------------------------
  203. INT 09 - IRQ1 - KEYBOARD DATA READY
  204. Notes:    generated when data is received from the keyboard.  This is normally a
  205.       scan code, but may also be an ACK or NAK of a command on AT-class
  206.       keyboards.
  207.     may be masked by setting bit 1 on I/O port 21h
  208.     if the BIOS supports an enhanced (101/102-key) keyboard, it calls
  209.       INT 15/AH=4Fh after reading the scan code from the keyboard and
  210.       before further processing
  211.     the interrupt handler performs the following actions for certain
  212.       special keystrokes:
  213.         Ctrl-Break     invoke INT 1B, set flag at 0040h:0071h
  214.         SysRq     invoke INT 15/AH=85h
  215.         Ctrl-Numlock place system in a tight wait loop until next INT 09
  216.         Ctrl-Alt-Del jump to BIOS startup code (either F000h:FFF0h or the
  217.                destination of the jump at that address)
  218.         Shift-PrtSc     invoke INT 05
  219. SeeAlso: INT 05,INT 0B"HP 95LX",INT 15/AH=4Fh,INT 15/AH=85h,INT 16,INT 1B
  220. SeeAlso: INT 51"DESQview",INT 59"DoubleDOS",INT 79"GO32"
  221. ----------09---------------------------------
  222. INT 09 - CPU-generated (80286+) - PROCESSOR EXTENSION PROTECTION ERROR
  223. Notes:    called if the coprocessor attempts to access memory outside a segment
  224.       boundary; it may occur at an arbitrary time after the coprocessor
  225.       instruction was issued
  226.     until the condition is cleared or the coprocessor is reset, the only
  227.       coprocessor instruction which may be used is FNINIT; WAIT or other
  228.       coprocessor instructions will cause a deadlock because the
  229.       coprocessor is still busy waiting for data
  230. SeeAlso: INT 07"CPU"
  231. ----------09---------------------------------
  232. INT 09 - internal hardware - RESERVED BY Intel (80486 protected mode)
  233. Note:    this exception has been moved to INT 0D
  234. SeeAlso: INT 09"MATH",INT 0D
  235. ----------0A---------------------------------
  236. INT 0A - IRQ2 - LPT2 (PC), VERTICAL RETRACE INTERRUPT (EGA,VGA)
  237. Notes:    the TOPS and PCnet adapters use this interrupt request line by default
  238.     DOS 3.2 revectors IRQ2 to a stack-switching routine
  239.     on ATs and above, the physical data line for IRQ2 is labeled IRQ9 and
  240.       connects to the slave 8259.  The BIOS redirects the interrupt for
  241.       IRQ9 back here.
  242.     under DESQview, only the INT 15h vector and BASIC segment address (the
  243.       word at 0000h:0510h) may be assumed to be valid for the handler's
  244.       process
  245.     many VGA boards do not implement the vertical retrace interrupt,
  246.       including the IBM VGA Adapter where the traces are either cut or
  247.       removed
  248. SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71,INT 7A"GO32"
  249. ----------0A---------------------------------
  250. INT 0A - IRQ2 - Tandy 1000-series HARD DISK
  251. Note:    may be masked by setting bit 2 on I/O port 21h
  252. SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71
  253. ----------0A---------------------------------
  254. INT 0A - IRQ2 - ROLAND MPU MIDI INTERFACE
  255. Note:    newer Roland cards and MIDI interfaces by other manufacturers use
  256.       a jumper-selectable IRQ, but software and hardware generally defaults
  257.       to IRQ2
  258. SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71,INT 7A"GO32"
  259. ----------0A---------------------------------
  260. INT 0A - CPU-generated (80286+ protected mode) - INVALID TASK STATE SEGMENT
  261. Notes:    automatically called during a task switch if the new TSS specified by
  262.       the task gate is invalid for any of the following reasons:
  263.         TSS limit is less than 43 (80286) or 103 (80386/80486)
  264.         LDT selector invalid or segment not present
  265.         null SS selector, or SS selector outside LDT/GDT limit
  266.         stack segment is read-only
  267.         stack segment DPL differs from new CPL, or RPL <> CPL
  268.         CS selector is outside LDT/GDT limit or not code
  269.         non-conforming code segment's DPL differs from CPL
  270.         conforming code segment's DPL > CPL
  271.         DS/ES selectors outside LDT/GDT limit or not readable segments
  272.     the handler must use a task gate in order to have a valid TSS under
  273.       which to execute; it must also reset the busy bit in the new TSS
  274. SeeAlso: INT 0B"CPU"
  275. ----------0B---------------------------------
  276. INT 0B - IRQ3 - SERIAL COMMUNICATIONS (COM2)
  277. Notes:    the TOPS and PCnet adapters use this interrupt request line as an
  278.       alternate
  279.     on PS/2's, COM2 through COM8 share this interrupt; on many PC's, COM4
  280.       shares this interrupt
  281.     may be masked by setting bit 3 on I/O port 21h
  282. SeeAlso: INT 0C"COM1",INT 53"DESQview",INT 5B"DoubleDOS",INT 7B"GO32"
  283. ----------0B---------------------------------
  284. INT 0B - CPU-generated (80286+ protected mode) - SEGMENT NOT PRESENT
  285. Notes:    generated when loading a segment register if the segment descriptor
  286.       indicates that the segment is not currently in memory, unless the
  287.       segment is an LDT (see INT 0A"CPU") or stack segment (see
  288.       INT 0C"CPU") needed by a task switch
  289.     may be used to implement virtual memory by loading in segments as they
  290.       are accessed, clearing the "not present" bit after loading
  291. SeeAlso: INT 0A"CPU",INT 0E"hardware"
  292. ----------0B---------------------------------
  293. INT 0B - HP 95LX - LOW-LEVEL KEYBOARD HANDLER
  294. Note:    debounces key, places the keycode in I/O register 60h, and calls INT 09
  295. SeeAlso: INT 09,INT 0D"HP 95LX"
  296. ----------0C---------------------------------
  297. INT 0C - IRQ4 - SERIAL COMMUNICATIONS (COM1)
  298. Notes:    on many PC's, COM3 shares this interrupt
  299.     may be masked by setting bit 4 on I/O port 21h
  300. SeeAlso: INT 0B"COM2",INT 54"DESQview",INT 5C"DoubleDOS",INT 7C"GO32"
  301. ----------0C---------------------------------
  302. INT 0C - CPU-generated (80286+) - STACK FAULT
  303. Notes:    generated on stack overflow/underflow in protected mode
  304.     generated in protected mode if an inter-level transition or task switch
  305.       references a stack segment marked "not present"
  306.     generated on accessing a word operand at SS:FFFFh in real mode
  307.     the 80286 will shut down in real mode if SP=1 before a push.  On the
  308.       PC AT and compatibles, external circuitry generates a reset on
  309.       shutdown.
  310. SeeAlso: INT 0B"CPU",INT 0D"CPU"
  311. ----------0C---------------------------------
  312. INT 0C - IBM SYSTEM 36/38 WORKSTATION EMULATION - API POINTER
  313.    Call offset 100h in the interrupt handler's segment with
  314.     AH = function
  315.         03h update screen
  316.         05h select next session
  317.         AL = session number (00h-03h)
  318.         Return: AL = session type code
  319.                 00h not active
  320.                 01h display session
  321.                 02h printer session
  322.                 FEh invalid session number
  323.             DS = requested session's data segment (0 if not active)
  324. Return: ???
  325.  
  326. Format of emulator's data area (offset from interrupt handler's segment):
  327. Offset    Size    Description
  328. 13Eh    BYTE    bit flags for status line indicators turned on since this byte
  329.         last zerod
  330. 13Fh    BYTE    bit flags for status line indicators turned off since this
  331.         byte last set to FFh
  332. 140h    WORD    offset of EBCDIC to ASCII translation
  333. 146h    WORD    offset of EBCDIC screen buffer
  334. 148h    WORD    offset of EC (engineering change) level signature
  335. 150h    BYTE    "KEYI"
  336. 151h    BYTE    5250 key scan code to be sent to remote
  337. 15Bh    BYTE    "SYSAV"
  338. 15Dh    BYTE    5250 cursor column
  339. 15Eh    BYTE    5250 cursor row
  340. 167h    BYTE    "DVCTAD"
  341. 178h    BYTE    "FLAGS"
  342. 184h    BYTE    "SESSNOAD"
  343. 193h    BYTE    "STNAD"
  344. 198h    BYTE    "NSDS"
  345. ----------0D---------------------------------
  346. INT 0D - IRQ5 - FIXED DISK (PC,XT), LPT2 (AT), reserved (PS/2)
  347. Notes:    under DESQview, only the INT 15h vector and BASIC segment address (the
  348.       word at 0000h:0510h) may be assumed to be valid for the handler's
  349.       process
  350.     may be masked by setting bit 5 on I/O port 21h
  351. SeeAlso: INT 0E"IRQ6",INT 0F"IRQ7",INT 55"DESQview",INT 5D"DoubleDOS"
  352. SeeAlso: INT 7D"GO32"
  353. ----------0D---------------------------------
  354. INT 0D - IRQ5 - Tandy 1000 60 Hz RAM REFRESH
  355. SeeAlso: INT 55
  356. ----------0D---------------------------------
  357. INT 0D - HP 95LX - INFRARED INTERRUPT
  358. SeeAlso: INT 0B"HP 95LX",INT 0E"HP 95LX"
  359. ----------0D---------------------------------
  360. INT 0D - CPU-generated (80286+) - GENERAL PROTECTION VIOLATION
  361. Notes:    called in real mode when
  362.         an instruction accesses a word operand located at offset FFFFh in
  363.           segment CS, DS, ES, FG, or GS
  364.         a PUSH MEM or POP MEM instruction contains an invalid bit encoding
  365.           in the second byte
  366.         an instruction exceeds the maximum length allowed (10 bytes for
  367.           80286, 15 bytes for 80386/80486)
  368.         an instruction wraps from offset FFFFh to offset 0000h
  369.     called in protected mode on protection violations not covered by INT 06
  370.       through INT 0C, including
  371.         segment limit violations
  372.         write to read-only segments
  373.         accesses using null DS or ES selectors
  374.         accesses to segments with privilege greater than CPL
  375.         wrong descriptor type
  376.     called on 80486 protected-mode floating-point protection fault
  377. SeeAlso: INT 09"80486",INT 0C"STACK"
  378. ----------0E---------------------------------
  379. INT 0E - IRQ6 - DISKETTE CONTROLLER
  380. Notes:    generated by floppy disk controller on completion of an operation
  381.     default handler is at F000h:EF57h in IBM PC and 100%-compatible BIOSes
  382.     may be masked by setting bit 6 on I/O port 21h
  383. SeeAlso: INT 0D"IRQ5",INT 56"DESQview",INT 5E"DoubleDOS",INT 7E"GO32"
  384. ----------0E---------------------------------
  385. INT 0E - CPU-generated (80386+ native mode) - PAGE FAULT
  386. Note:    used to implement virtual memory
  387. SeeAlso: INT 0B"hardware"
  388. ----------0E---------------------------------
  389. INT 0E - HP 95LX - EXTERNAL CARD INTERRUPT
  390. SeeAlso: INT 0D"HP 95LX",INT 0F"HP 95LX"
  391. ----------0F---------------------------------
  392. INT 0F - IRQ7 - PARALLEL PRINTER
  393. Notes:    generated by the LPT1 printer adapter when printer becomes ready
  394.     most printer adapters do not reliably generate this interrupt
  395.     the 8259 interrupt controller generates an interrupt corresponding to
  396.       IRQ7 when an error condition occurs
  397. SeeAlso: INT 0D"LPT2",INT 57"DESQview",INT 5F"DoubleDOS",INT 7F"GO32"
  398. ----------0F---------------------------------
  399. INT 0F - HP 95LX - REAL-TIME CLOCK
  400. SeeAlso: INT 0E"HP 95LX",INT 70
  401. ----------10---------------------------------
  402. INT 10 - CPU-generated (80286+) - COPROCESSOR ERROR
  403. Notes:    generated by the CPU when the -ERROR pin is asserted by the coprocessor
  404.     AT's and clones usually wire the coprocessor to use IRQ13, but not all
  405.       get it right
  406. SeeAlso: INT 09"hardware",INT 75
  407. ----------1000-------------------------------
  408. INT 10 - VIDEO - SET VIDEO MODE
  409.     AH = 00h
  410.     AL = mode (see below)
  411. Return: AL = video mode flag (Phoenix BIOS)
  412.         20h mode > 7
  413.         30h modes <= 7 except mode 6
  414.         3Fh mode 6
  415.     AL = CRT controller mode byte (Phoenix 386 BIOS v1.10)
  416. Notes:    IBM standard modes do not clear the screen if the high bit of AL is set
  417.       (EGA or higher only)
  418.     the Tseng ET4000 chipset is used by the Orchid Prodesigner II, Diamond
  419.       SpeedSTAR VGA, Groundhog Graphics Shadow VGA
  420.     the installation check for Ahead adapters is the signature "AHEAD" at
  421.       C000h:0025h
  422.     the installation check for ATI adapters is the signature "761295520" at
  423.       C000h:0031h; the byte at C000h:0043h indicates the chipset revision:
  424.         31h for 18800
  425.         32h for 18800-1
  426.         33h for 18800-2
  427.         34h for 18800-4
  428.         35h for 18800-5
  429.       the two bytes at C000h:0040h indicate the adapter type
  430.         "31" VGA Wonder
  431.         "32" EGA Wonder800+
  432.       the byte at C000h:0042h contains feature flags
  433.         bit 1: mouse port present
  434.         bit 4: programmable video clock
  435.       the byte at C000h:0044h contains additional feature flags if chipset
  436.       byte > 30h
  437.         bit 0: 70 Hz non-interlaced display
  438.         bit 1: Korean (double-byte) characters
  439.         bit 2: 45 MHz memory clock rather than 40 MHz
  440.         bit 3: zero wait states
  441.         bit 4: paged ROMs
  442.         bit 6: no 8514/A monitor support
  443.         bit 7: HiColor DAC
  444.     the installation check for Genoa video adapters is the signature
  445.       77h XXh 99h 66h at C000h:0037h, where XXh is
  446.         00h for Genoa 6200/6300
  447.         11h for Genoa 6400/6600
  448.         22h for Genoa 6100
  449.         33h for Genoa 5100/5200
  450.         55h for Genoa 5300/5400
  451.     the installation check for Paradise adapters is the signature "VGA=" at
  452.       C000h:007Dh
  453. SeeAlso: AX=0070h,AX=007Eh,AX=10F0h,AX=6F05h,AH=FFh"GO32",INT 5F/AH=00h
  454.  
  455. Values for video mode:
  456.       text/ text pixel     pixel    colors    disply    scrn  system
  457.       grph resol  box    resoltn        pages    addr
  458.  00h = T   40x25  8x8        16gray       8    B800 CGA,PCjr
  459.      = T   40x25  8x14        16gray       8    B800 EGA
  460.      = T   40x25  8x16          16       8    B800 MCGA
  461.      = T   40x25  9x16          16       8    B800 VGA
  462.  01h = T   40x25  8x8          16       8    B800 CGA,PCjr
  463.      = T   40x25  8x14          16       8    B800 EGA
  464.      = T   40x25  8x16          16       8    B800 MCGA
  465.      = T   40x25  9x16          16       8    B800 VGA
  466.  02h = T   80x25  8x8        16gray       4    B800 CGA,PCjr
  467.      = T   80x25  8x14        16gray       4    B800 EGA
  468.      = T   80x25  8x16          16       4    B800 MCGA
  469.      = T   80x25  9x16          16       4    B800 VGA
  470.  03h = T   80x25  8x8          16       4    B800 CGA,PCjr
  471.      = T   80x25  8x14          16       4    B800 EGA
  472.      = T   80x25  8x16          16       4    B800 MCGA
  473.      = T   80x25  9x16          16       4    B800 VGA
  474.  04h = G   40x25  8x8    320x200       4        B800 CGA,PCjr,EGA,MCGA,VGA
  475.  05h = G   40x25  8x8    320x200     4gray        B800 CGA,PCjr,EGA
  476.      = G   40x25  8x8    320x200       4        B800 MCGA,VGA
  477.  06h = G   80x25  8x8    640x200       2        B800 CGA,PCjr,EGA,MCGA,VGA
  478.  07h = T   80x25  9x14         mono      var    B000 MDA,Hercules,EGA
  479.      = T   80x25  9x16         mono        B000 VGA
  480.  08h = G   20x25  8x8    160x200      16             PCjr
  481.      = T  132x25  8x8          16        B800 ATI EGA/VGA Wonder [1]
  482.      = T  132x25  8x8         mono        B000 ATI EGA/VGA Wonder [1]
  483.      = G   90x43  8x8    720x352     mono        B000 Hercules + MSHERC.COM
  484.  09h = G   40x25  8x8    320x200      16             PCjr
  485.  0Ah = G   80x25  8x8    640x200       4             PCjr
  486.  0Bh =     reserved (used internally by EGA BIOS)
  487.  0Ch =     reserved (used internally by EGA BIOS)
  488.  0Dh = G   40x25  8x8    320x200      16       8    A000 EGA,VGA
  489.  0Eh = G   80x25  8x8    640x200      16       4    A000 EGA,VGA
  490.  0Fh = G   80x25  8x14    640x350     mono       2    A000 EGA,VGA
  491.  10h = G   80x25  8x14    640x350       4       2    A000 64k EGA
  492.      = G        640x350      16        A000 256k EGA,VGA
  493.  11h = G   80x30  8x16    640x480     mono        A000 VGA,MCGA,ATI EGA,ATI VIP
  494.  12h = G   80x30  8x16    640x480 16/256k        A000 VGA,ATI VIP
  495.      = G   80x30  8x16    640x480     16/64        A000 ATI EGA Wonder
  496.      = G        640x480      16             UltraVision+256K EGA
  497.  13h = G   40x25  8x8    320x200 256/256k    A000 VGA,MCGA,ATI VIP
  498.  14h = T  132x25  Nx16          16             XGA, IBM Enhanced VGA [2]
  499.      = G   80x25  8x8    640x200                 Lava Chrome II EGA
  500.      = G        640x400      16             Tecmar VGA/AD
  501.  15h = G   80x25  8x14    640x350                 Lava Chrome II EGA
  502.  16h = G   80x25  8x14    640x350                 Lava Chrome II EGA
  503.      = G        800x600      16             Tecmar VGA/AD
  504.  17h = G   80x34  8x14    640x480                 Lava Chrome II EGA
  505.      = T  132x25                     Tecmar VGA/AD
  506.  18h = T  132x44  8x8         mono             Tseng Labs EVA
  507.      = T  132x44  8x8         16/256       2    B000 Tseng ET4000 chipset
  508.      = G   80x34  8x14    640x480                 Lava Chrome II EGA
  509.      = G           1024x768      16             Tecmar VGA/AD
  510.  19h = T  132x25  8x14         mono             Tseng Labs EVA
  511.      = T  132x25  8x14         16/256       4    B000 Tseng ET4000 chipset
  512.  1Ah = T  132x28  8x13         mono             Tseng Labs EVA
  513.      = T  132x28  8x13         16/256       4    B000 Tseng ET4000 chipset
  514.      = G        640x350     256             Tecmar VGA/AD
  515.  1Bh = G        640x400     256             Tecmar VGA/AD
  516.  1Ch = G        640x480     256             Tecmar VGA/AD
  517.  1Dh = G        800x600     256             Tecmar VGA/AD
  518.  20h = G        240x128            B000 HP 95LX
  519.  21h = G   80x43  8x8    720x348     mono        B000 DESQview 2.x+Hercules [3]
  520.  22h = T  132x44  8x8                     Tseng Labs EVA
  521.      = T  132x44  8x8         16/256       2    B800 Tseng ET4000 chipset
  522.      = T  132x44  8x8                     Ahead Systems EGA2001
  523.      = T  132x44  8x8          16       2    B800 Ahead B
  524.      = T  132x44          16             Orchid Prodesigner VGA
  525.      = T  132x43                     Allstar Peacock (VGA)
  526.      = G   80x43  8x8    720x348     mono        B800 DESQview 2.x+Hercules [3]
  527.  23h = T  132x25  6x14                     Tseng Labs EVA
  528.      = T  132x25  8x14         16/256       4    B800 Tseng ET4000 chipset
  529.      = T  132x25  8x14                     Ahead Systems EGA2001
  530.      = T  132x25  8x14          16       4    B800 Ahead B
  531.      = T  132x25  8x8          16        B800 ATI EGA Wonder,ATI VIP
  532.      = T  132x28                     Allstar Peacock (VGA)
  533.      = T  132x28          16             Orchid Prodesigner VGA
  534.  24h = T  132x28  6x13                     Tseng Labs EVA
  535.      = T  132x28  8x13         16/256       4    B800 Tseng ET4000 chipset
  536.      = T  132x28  8x12          16       1    B800 Ahead B
  537.      = T  132x25                     Allstar Peacock (VGA)
  538.      = T  132x25          16             Orchid Prodesigner VGA
  539.  25h = G   80x60  8x8    640x480                 Tseng Labs EVA
  540.      = G   80x60  8x8    640x480     16/256       1    A000 Tseng ET4000 chipset
  541.      = G        640x480      16             VEGA VGA
  542.      = G   80x60  8x8    640x480      16        A000 Orchid Prodesigner VGA
  543.      = G   80x60  8x8    640x480      16       1    A000 Ahead B (same as 26h)
  544.  26h = T   80x60  8x8                     Tseng Labs EVA
  545.      = T   80x60  8x8         16/256       2    B800 Tseng ET4000 chipset
  546.      = G   80x60  8x8    640x480                 Ahead Systems EGA2001
  547.      = G   80x60  8x8    640x480      16       1    A000 Ahead B (same as 25h)
  548.      = T   80x60                     Allstar Peacock (VGA)
  549.      = T   80x60          16             Orchid ProDesigner VGA
  550.  27h = G        720x512      16             VEGA VGA
  551.      = G        720x512      16             Genoa
  552.      = T  132x25  8x8         mono        B000 ATI EGA Wonder,ATI VIP
  553.  28h = T  ???x???                     VEGA VGA
  554.  29h = G        800x600      16             VEGA VGA
  555.      = G  100x37  8x16    800x600      16        A000 Orchid
  556.      = G        800x600      16        A000 STB,Genoa,Sigma
  557.      = G        800x600      16             Allstar Peacock (VGA)
  558.      = G  100x37  8x16    800x600     16/256       1    A000 Tseng ET3000/4000 chipset
  559.  2Ah = T  100x40                     Allstar Peacock (VGA)
  560.      = T  100x40  8x16          16             Orchid Prodesigner VGA
  561.      = T  100x40  8x15        16/256       4    B800 Tseng ET4000 chipset
  562.  2Dh = G        640x350     256             VEGA VGA
  563.      = G        640x350 256/256k    A000 Orchid, Genoa, STB
  564.      = G   80x25  8x14    640x350 256/256k   1    A000 Tseng ET3000/4000 chipset
  565.  2Eh = G        640x480     256             VEGA VGA
  566.      = G   80x30  8x16    640x480 256/256k    A000 Orchid
  567.      = G        640x480 256/256k    A000 STB,Genoa,Sigma
  568.      = G   80x30  8x16    640x480 256/256k   1    A000 Tseng ET3000/4000 chipset
  569.  2Fh = G        720x512     256             VEGA VGA
  570.      = G        720x512     256             Genoa
  571.      = G   80x25  8x16    640x400 256/256k   1    A000 Tseng ET4000 chipset
  572.      = T  160x50  8x8  1280x400      16       4    B800 Ahead B (Wizard/3270)
  573.  30h = G        800x600     256             VEGA VGA
  574.      = G  100x37  8x16    800x600 256/256k    A000 Orchid 
  575.      = G        800x600 256/256k    A000 STB,Genoa,Sigma
  576.      = G        720x350       2             3270 PC
  577.      = G        800x600     256             Cardinal
  578.      = G        ???x???            B800 AT&T 6300
  579.      = G  100x37  8x16    800x600 256/256k   1    A000 Tseng ET3000/4000 chipset
  580.  32h = T   80x34  8x10          16       4    B800 Ahead B (Wizard/3270)
  581.  33h = T  132x44  8x8          16        B800 ATI EGA Wonder,ATI VIP
  582.      = T   80x34  8x8          16       4    B800 Ahead B (Wizard/3270)
  583.  34h = T   80x66  8x8          16       4    B800 Ahead B (Wizard/3270)
  584.  36h = G        960x720      16             VEGA VGA
  585.      = G        960x720      16             STB
  586.      = G        960x720      16             Tseng ET3000
  587.  37h = G           1024x768      16             VEGA VGA
  588.      = G  128x48  8x16 1024x768      16        A000 Orchid
  589.      = G           1024x768      16        A000 STB,Genoa,Sigma
  590.      = G           1024x768      16             Definicon
  591.      = G           1024x768      16             Tseng ET3000
  592.      = T  132x44  8x8         mono        B800 ATI EGA Wonder,ATI VIP
  593.  38h = G           1024x768     256             STB VGA/EM-16 Plus (1MB)
  594.      = G  128x48  8x16 1024x768 256/256k   1    A000 Tseng ET4000 chipset
  595.      = G           1024x768     256             Orchid ProDesigner II
  596.  3Dh = G           1280x1024  16             Definicon
  597.  3Eh = G           1280x961      16             Definicon
  598.  40h = G   80x25  8x16    640x400       2       1    B800 AT&T 6300, AT&T VDC600
  599.      = G   80x25  8x16    640x400       2       1    B800 Compaq Portable
  600.      = T   80x43                     VEGA VGA, Tecmar VGA/AD
  601.      = T   80x43                     Video7 V-RAM VGA
  602.      = T   80x43                     Tatung VGA
  603.      = T  100x30          16             MORSE VGA
  604.  41h = G        640x200      16       1         AT&T 6300
  605.      = T  132x25                     VEGA VGA
  606.      = T  132x25                     Tatung VGA
  607.      = T  132x25                     Video7 V-RAM VGA
  608.      = T  100x50          16             MORSE VGA
  609.  42h = G   80x25  8x16    640x400      16             AT&T 6300, AT&T VDC600
  610.      = T  132x43                     VEGA VGA
  611.      = T  132x43                     Tatung VGA
  612.      = T  132x43                     Video7 V-RAM VGA
  613.      = T   80x34  9x10           4       4    B800 Ahead B (Wizard/3270)
  614.      = T  100x60          16             MORSE VGA
  615.  43h = G         640x200 of 640x400 viewport     AT&T 6300 (unsupported)
  616.      = T   80x60                     VEGA VGA
  617.      = T   80x60                     Tatung VGA
  618.      = T   80x60                     Video7 V-RAM VGA
  619.      = T   80x45  9x8           4       4    B800 Ahead B (Wizard/3270)
  620.      = T  100x75          16             MORSE VGA
  621.  44h =     disable VDC and DEB output             AT&T 6300
  622.      = T  100x60                     VEGA VGA
  623.      = T  100x60                     Tatung VGA
  624.      = T  100x60                     Video7 V-RAM VGA
  625.  45h = T  132x28                     Tatung VGA
  626.      = T  132x28                     Video7 V-RAM VGA
  627.  46h = G  100x40  8x15    800x600       2             AT&T VDC600
  628.  47h = G  100x37  8x16    800x600      16             AT&T VDC600
  629.  48h = G   80x50  8x8    640x400       2        B800 AT&T 6300, AT&T VDC600
  630.  49h = G   80x30  8x16    640x480                 Lava Chrome II EGA
  631.  4Dh = T  120x25                     VEGA VGA
  632.  4Eh = T  120x43                     VEGA VGA
  633.  4Fh = T  132x25                     VEGA VGA
  634.  50h = G   80x30  8x16    640x480      16             Paradise EGA-480
  635.      = T   80x30  8x16         16/256k    B800 Trident TVGA 8800/8900
  636.      = T   80x34                     Lava Chrome II EGA
  637.      = T   80x43         mono             VEGA VGA
  638.      = G        640x480     mono???         Taxan 565 EGA
  639.      = T  132x25  9x14         mono             Ahead Systems EGA2001
  640.      = T  132x25  9x14           4       4    B800 Ahead B
  641.      = T  132x25  8x14          16       8    B800 OAK Technologies VGA-16
  642.      = T  132x30          16             MORSE VGA
  643.  51h = T   80x30  8x16                     Paradise EGA-480
  644.      = T   80x30                     Lava Chrome II EGA
  645.      = G   80x34  8x14    640x480      16             ATI EGA Wonder
  646.      = T   80x43  8x11         16/256k    B800 Trident TVGA 8800/8900
  647.      = T  132x25         mono             VEGA VGA
  648.      = T  132x43  8x8          16       5    B800 OAK Technologies VGA-16
  649.      = T  132x28  9x12           4       4    B800 Ahead B
  650.      = T  132x50          16             MORSE VGA
  651.  52h = T   80x60                     Lava Chrome II EGA
  652.      = T   80x60  8x8         16/256k    B800 Trident TVGA 8800/8900
  653.      = G   94x29  8x14    752x410      16             ATI EGA Wonder
  654.      = G  100x75  8x8    800x600      16       1    A000 OAK Technologies VGA-16
  655.      = T  132x43         mono             VEGA VGA
  656.      = T  132x44  9x8         mono             Ahead Systems EGA2001
  657.      = T  132x44  9x8           4       2    B800 Ahead B
  658.      = T  132x60          16             MORSE VGA
  659.  53h = G  100x40  8x14    800x560      16             ATI EGA Wonder,ATI VIP
  660.      = G        640x480     256             Oak VGA
  661.      = T  132x25  8x14         16/256k    B800 Trident TVGA 8800/8900
  662.      = T  132x43                     Lava Chrome II EGA
  663.      = T   80x60          16             MORSE VGA
  664.      = G                         AX PC
  665.  54h = G  100x42  8x14    800x600      16        A000 ATI EGA Wonder, VGA Wonder
  666.      = G        800x600     256             Oak VGA    
  667.      = T  132x25                     Lava Chrome II EGA
  668.      = T  132x30  8x16         16/256k    B800 Trident TVGA 8800/8900
  669.      = T  132x43  8x8                     Paradise EGA-480
  670.      = T  132x43  7x9         16/256k    B800 Paradise VGA
  671.      = T  132x43  8x9         16/256k    B800 Paradise VGA on multisync
  672.      = T  132x43                     Taxan 565 EGA
  673.      = T  132x43                     AST VGA Plus
  674.      = T  132x43                     Hewlett-Packard D1180A
  675.      = T  132x43  7x9          16             AT&T VDC600
  676.  55h = T   80x66  8x8         16/256k    A000 ATI VIP
  677.      = T  132x25  8x14                     Paradise EGA-480
  678.      = T  132x25  7x16         16/256k    B800 Paradise VGA
  679.      = T  132x25  8x16         16/256k    B800 Paradise VGA on multisync
  680.      = T  132x25                     Taxan 565 EGA
  681.      = T  132x25                     AST VGA Plus
  682.      = T  132x25                     Hewlett-Packard D1180A
  683.      = T  132x25  7x16          16             AT&T VDC600
  684.      = T  132x43  8x11         16/256k    B800 Trident TVGA 8800/8900
  685.      = G   94x29  8x14    752x410                 Lava Chrome II EGA
  686.      = G  128x48  8x16 1024x768     16/256k    A000 ATI VGA Wonder v4+     [4]
  687.      = G           1024x768     16/256h         ATI VGA Wonder Plus
  688.  56h = T  132x43  8x8           3???       2    B000 NSI Smart EGA+
  689.      = T  132x43  7x9           4        B000 Paradise VGA
  690.      = T  132x43  8x9           4        B000 Paradise VGA on multisync
  691.      = T  132x43         mono             Taxan 565 EGA
  692.      = T  132x43  7x9           2             AT&T VDC600
  693.      = T  132x60  8x8         16/256k    B800 Trident TVGA 8800/8900
  694.      = G           1024x768      16             Oak VGA
  695.  57h = T  132x25  8x14           3???       4    B000 NSI Smart EGA+
  696.      = T  132x25  7x16           4        B000 Paradise VGA
  697.      = T  132x25  8x16           4        B000 Paradise VGA on multisync
  698.      = T  132x25         mono             Taxan 565 EGA
  699.      = T  132x25  7x16           2             AT&T VDC600
  700.      = T  132x25  9x14         16/256k    B800 Trident TVGA 8800/8900
  701.  58h = G  100x75  8x8    800x600     16/256k    A000 Paradise VGA
  702.      = G  100x75  8x8    800x600      16             AT&T VDC600
  703.      = T   80x33  8x14          16        B800 ATI EGA Wonder,ATI VIP
  704.      = G        800x600      16             AST VGA Plus, Compaq VGA
  705.      = G        800x600      16             Dell VGA
  706.      = G        800x600      16             Hewlett-Packard D1180A
  707.      = T  132x30  9x16         16/256k    B800 Trident TVGA 8800/8900
  708.  59h = G  100x75  8x8    800x600       2        A000 Paradise VGA
  709.      = G  100x75  8x8    800x600       2             AT&T VDC600
  710.      = T   80x66  8x8         16/256k    A000 ATI VIP
  711.      = G        800x600       2             AST VGA Plus, Compaq VGA
  712.      = G        800x600       2             Dell VGA
  713.      = G        800x600       2             Hewlett-Packard D1180A
  714.      = T  132x43  9x11         16/256k    B800 Trident TVGA 8800/8900
  715.  5Ah = T  132x60  9x8         16/256k    B800 Trident TVGA 8800/8900
  716.  5Bh = G        800x600      16             Maxxon, SEFCO TVGA, Imtec
  717.      = G        640x350     256             Genoa 6400
  718.      = T   80x30  8x16                B800 ATI VGA Wonder (undoc)
  719.      = G  100x75  8x8    800x600     16/256k    A000 Trident TVGA 8800, 8900
  720.  5Ch = G        640x400     256             Logix, ATI Prism Elite
  721.      = G        640x400     256             Maxxon, SEFCO TVGA, Imtec
  722.      = G   80x25  8x16    640x400     256/256k    A000 Zymos Poach, Hi Res 512
  723.      = G   80x25  8x16    640x400     256/256k    A000 Trident TVGA 8800/8900
  724.      = G        640x480     256             Genoa 6400
  725.  5Dh = G        640x480     256             Logix, ATI Prism Elite
  726.      = G        640x480     256             Maxxon, SEFCO TVGA, Imtec
  727.      = G   80x30  8x16    640x480     256/256k    A000 Zymos Poach, Hi Res 512
  728.      = G   80x30  8x16    640x480     256/256k    A000 Trident TVGA 8800 (512K)
  729.  5Eh = G        640x400     256             Paradise VGA,VEGA VGA
  730.      = G        640x400     256             AST VGA Plus
  731.      = G        640x400     256             Compaq VGA, Dell VGA
  732.      = G   80x25  8x16    640x400     256             AT&T VDC600
  733.      = G        800x600      16             Logix, ATI Prism Elite
  734.      = G        800x600     256             Genoa 6400
  735.      = G  100x75  8x8    800x600     256/256k    A000 Zymos Poach, Trident 8900
  736.      = G  100x75  8x8    800x600     256/256k    A000 Hi Res 512
  737.  5Fh = G        640x480     256             Paradise VGA
  738.      = G        640x480     256             AST VGA Plus
  739.      = G        640x480     256             Compaq VGA, Dell VGA
  740.      = G        640x480     256             Hewlett-Packard D1180A
  741.      = G   80x30  8x16    640x480     256             AT&T VDC600 (512K)
  742.      = G           1024x768      16             Logix, ATI Prism Elite
  743.      = G           1024x768      16             Maxxon, Genoa 6400, Imtec
  744.      = G  128x48  8x16 1024x768      16/256k    A000 Zymos Poach, Hi Res 512
  745.      = G  128x48  8x16 1024x768      16/256k    A000 Trident TVGA 88/8900 512K
  746.  60h = G   80x???    ???x400                 Corona/Cordata BIOS 4.10+
  747.      = G        752x410                 VEGA VGA
  748.      = G        752x410      16             Tatung VGA
  749.      = G        752x410      16             Video7 V-RAM VGA
  750.      = G   80x25  8x16    640x400     256       1    A000 Ahead A, Ahead B
  751.      = G  128x48  8x16 1024x768       4/256k    A000 Trident TVGA 8900
  752.      = T  132x25  8x14          16/64       8    B800 Quadram Ultra VGA
  753.  61h = G        ???x400                 Corona/Cordata BIOS 4.10+
  754.      = G        720x540                 VEGA VGA
  755.      = G        720x540      16             Tatung VGA
  756.      = G        720x540      16             Video7 V-RAM VGA
  757.      = G   80x25  8x16    640x400     256        A000 ATI VGA Wonder,VGA Wonder+
  758.      = G   80x30  8x16    640x480     256       1    A000 Ahead A, Ahead B (512K)
  759.      = G   96x64  8x16    768x1024  16/256k    A000 Trident TVGA 88/8900 512K
  760.      = T  132x29  8x12          16/64       8    B800 Quadram Ultra VGA
  761.  62h = G        800x600                 VEGA VGA
  762.      = G        800x600      16             Tatung VGA
  763.      = G        800x600      16             Video7 V-RAM VGA
  764.      = G   80x30  8x16    640x480     256        A000 ATI VGA Wonder,VGA Wonder+
  765.      = G  100x75  8x8    800x600     256       1    A000 Ahead A, Ahead B (512K)
  766.      = G  128x48  8x16 1024x768     256/256k    A000 Trident TVGA 8900, Zymos
  767.      = T  132x32  8x11          16/64       6    B800 Quadram Ultra VGA
  768.  63h = G           1024x768       2             Video7 V-RAM VGA
  769.      = G  100x42  8x14    800x600     256        A000 ATI VGA Wonder,VGA Wonder+
  770.      = G  128x48  7x16 1024x768     256       1    A000 Ahead B (1MB)
  771.      = T  132x44  8x8          16/64       5    B800 Quadram Ultra VGA
  772.      = G        720x540      16             MORSE VGA
  773.  64h = G           1024x768       4             Video7 V-RAM VGA
  774.      = G  128x48  8x16 1024x768     256        A000 ATI VGA Wonder Plus
  775.      = G        800x600      16             MORSE VGA
  776.  65h = G           1024x768      16             Video7 V-RAM VGA
  777.      = G  128x48  8x16 1024x768      16        A000 ATI VGA Wonder
  778.  66h = G        640x400     256             Tatung VGA
  779.      = G        640x400     256             Video7 V-RAM VGA
  780.  67h = G        640x480     256             Video7 V-RAM VGA
  781.      = G  128x48  8x16 1024x768       4        A000 ATI VGA Wonder
  782.  69h = G        720x540     256             Video7 V-RAM VGA
  783.  6Ah = G        800x600      16        A000 VESA standard interface
  784.      = G        800x600      16             Genoa 6400
  785.      = G        800x600      16        A000 Ahead A
  786.      = G  100x75  8x8    800x600      16       1    A000 Ahead B (VESA) (see 71h)
  787.      = G        800x600      16             Zymos Poach, Hi Res 512
  788.      = G        800x600      16             Epson LT-386SX in CRT Mode
  789.      = G        800x600      16             Compuadd 316SL in CRT Mode
  790.      = G  100x42  8x14    800x600            A000 ATI VGA Wonder (undoc)
  791.  70h = G        800x600      16             C&T chipset, Cardinal
  792.      = G   90x28  8x14    720x392      16       1    A000 Ahead B
  793.      = T   40x25  8x8          16       8    B800 Quadram (CGA double scan)
  794.      =     extended mode set (see AX=0070h)         Everex Micro Enhancer EGA
  795.  71h = G  100x35  8x16    800x600     16of64        A000 NSI Smart EGA+
  796.      = G        960x720      16             C&T chipset, Cardinal
  797.      = G  100x75  8x8    800x600      16       1    A000 Ahead B (same as 6Ah)
  798.      = T   80x25  8x8          16       8    B800 Quadram (CGA double scan)
  799.  72h = G           1024x768      16             C&T chipset, Cardinal
  800.      = T   80x60  8x8          16        B800 Quadram Ultra VGA
  801.      = G        640x480 32768        A000 ATI
  802.  73h = G   80x60  8x8    640x480      16???        A000 Quadram Ultra VGA
  803.  74h = G        640x400       2        B800 Toshiba 3100 AT&T mode
  804.      = G  128x48  8x16 1024x768      16       1    A000 Ahead A, Ahead B (512K)
  805.      = T   80x66  8x8          16        B800 Quadram Ultra VGA
  806.  75h = G  128x48  8x16 1024x768       4       1    A000 Ahead B
  807.      = G   80x66    640x528      16???        A000 Quadram Ultra VGA
  808.  76h = G  128x48  8x16 1024x768       2       1    A000 Ahead B
  809.      = T   94x29  8x14          16        B800 Quadram Ultra VGA
  810.  77h = G   94x29    752x410      16???        A000 Quadram Ultra VGA
  811.  78h = G        640x400     256             STB VGA/EM-16 Plus
  812.      = G        640x400     256             Cardinal, C&T chipset
  813.      = T  100x75  8x8          16        B800 Quadram Ultra VGA
  814.  79h = G        640x480     256             Cardinal, C&T chipset
  815.      = G  100x75    800x600      16???        A000 Quadram Ultra VGA
  816.  7Ah = G        720x540     256             C&T chipset, Cardinal
  817.      = T  114x60  8x8          16        B800 Quadram Ultra VGA
  818.  7Bh = G        800x600     256             C&T chipset, Cardinal
  819.      = G  114x60    912x480      16???        A000 Quadram Ultra VGA
  820.  7Ch = G        512x512      16             Genoa
  821.  7Dh = G        512x512     256             Genoa
  822.  7Eh =     special mode set (see AX=007Eh)         Paradise VGA, AT&T VDC600
  823.  7Fh =     special function set (see AX=007Fh)         Paradise VGA, AT&T VDC600
  824.  82h = T   80x25         B&W             AT&T VDC overlay mode [5]
  825.  83h = T   80x25                     AT&T VDC overlay mode [5]
  826.  86h = G        640x200     B&W             AT&T VDC overlay mode [5]
  827.  88h = G   90x43  8x8    720x352     mono        B000 Hercules + MSHERC.COM
  828.  C0h = G        640x400     2/prog pallet         AT&T VDC overlay mode [5]
  829.  C4h =     disable output                     AT&T VDC overlay mode [5]
  830.  D0h = G        640x400       2        B800 DEC VAXmate AT&T mode
  831. Notes:
  832. [1] for ATI EGA Wonder, mode 08h is only valid if SMS.COM is loaded resident.
  833.       SMS maps mode 08h to mode 27h if the byte at location 0040:0063 is 0B4h,
  834.       otherwise to mode 23h, thus selecting the appropriate (monochrome or
  835.       color) 132x25 character mode.
  836.     for ATI VGA Wonder, mode 08h is the same, and only valid if VCONFIG loaded
  837.       resident
  838. [2] early XGA boards support 132-column text but do not have this BIOS mode
  839. [3] DESQview intercepts calls to change into these two modes (21h is page 0,
  840.       22h is page 1) even if there is no Hercules graphics board installed
  841. [4] ATI BIOS v4-1.00 has a text-scrolling bug in this mode
  842. [5] for AT&T VDC overlay modes, BL contains the DEB mode, which may be 06h,
  843.       40h, or 44h
  844. ----------100070-----------------------------
  845. INT 10 - VIDEO - Everex Micro Enhancer EGA/Viewpoint VGA - EXTENDED MODE SET
  846.     AX = 0070h
  847.     BL = mode (see below)
  848. SeeAlso: AH=00h,AX=6F05h,AX=7000h/BX=0004h,AH=FFh"GO32"
  849.  
  850. Values for video mode:
  851.       text/ text pixel     pixel    colors    disp    scrn  monitor    adapter
  852.       grph resol  box    resoltn        page    addr
  853.  00h = G        640x480      16             multsync    EGA,VGA
  854.  01h = G        752x410      16             multsync    EGA,VGA
  855.  02h = G        800x600      16             multsync    EGA,VGA
  856.  03h = T   80x34                     multsync    EGA,VGA
  857.  04h = T   80x60                     multsync    EGA,VGA
  858.  05h = T   94x29                     multsync    EGA only
  859.  06h = T   94x51                     multsync    EGA only
  860.  07h = T  100x43  8x14          16                VGA only
  861.  08h = T  100x75  8x8          16                VGA only
  862.  09h = T   80x44                     EGA    EGA only
  863.  0Ah = T  132x25                     EGA    EGA,VGA
  864.  0Bh = T  132x44                     EGA    EGA,VGA
  865.  0Ch = T  132x25                     CGA    EGA only
  866.  0Dh = T   80x44                     mono    EGA only
  867.  0Eh = T  132x25                     mono
  868.  0Fh = T  132x44                     mono
  869.  10h =     reserved
  870.  11h = G           1280x350       4                EGA only
  871.  12h = G           1280x600       4                EGA only
  872.  13h = G        640x350     256                EGA,EV673
  873.  14h = G        640x400     256
  874.  15h = G        512x480     256
  875.  16h = T   80x30  8x16         256                VGA only
  876.  18h = T  100x27  8x16          16                VGA only
  877.  20h = G           1024x768      16                Everex 629,678
  878.                                 Everex EV-673
  879.  21h = T  160x64  8x16 1280x1024  16                1MB VGA only
  880.  30h = G        640x480     256                Everex 629,678
  881.                                 Everex EV-673
  882.  31h = G        800x600     256                Everex 629,678
  883.                                 Everex EV-673
  884.  32h = G  128x48  8x16 1024x768     256                1MB VGA only
  885.  40h = T  132x30  8x16          16                VGA only
  886.  50h = T  132x32  8x16         mono                VGA only
  887.  62h = G   40x25  8x8    320x200     32K                Vwpt TC (EV629)
  888.  70h = G   64x30  8x16    512x480     32K                Viewpoint TC
  889.  71h = G   80x30  8x16    640x480     32K                Viewpoint TC
  890.  76h = G   64x30  8x16    512x480     16M                Viewpoint TC
  891.  77h = G   80x30  8x16    640x480     16M                Viewpoint TC
  892. ----------10007E-----------------------------
  893. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - SET SPECIAL MODE
  894.     AX = 007Eh
  895.     BX = horizontal dimension of the mode desired
  896.     CX = vertical dimension of the mode desired
  897.          (both BX/CX in pixels for graphics modes, rows for alpha modes)
  898.     DX = number of colors of the mode desired (0000h for monochrome modes)
  899. Return: BH = 7Eh if successful (Paradise VGA)
  900.     AL = 7Eh if successful (AT&T VDC600)
  901. SeeAlso: AH=00h,AX=0070h,AX=007Fh,AX=6F05h,AH=FFh"GO32"
  902. ----------10007F-----------------------------
  903. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - EXTENDED FUNCTIONS
  904.     AX = 007Fh
  905.     BH = function
  906.         00h     set VGA operation
  907.         01h     set non-VGA operation
  908.         color modes (0,1,2,3,4,5,6) will set non-VGA CGA operation
  909.         monochrome mode 7 will set non-VGA MDA/Hercules operation
  910.         02h     query mode status
  911.         Return: BL = 00h if operating in VGA mode, 01h if non-VGA mode
  912.             CH = total video RAM size in 64k byte units
  913.             CL = video RAM used by the current mode
  914.         03h     lock current mode
  915.         allows current mode (VGA or non-VGA) to survive re-boot
  916.         04h     enter CGA mode (AT&T VDC600 only)
  917.         05h     enter MDA mode (AT&T VDC600 only)
  918.         0Ah,0Bh,0Ch,0Dh,0Eh,0Fh  WRITE PARADISE REGISTERS 0,1,2,3,4,5
  919.         (port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh)
  920.         BL = value to set in the paradise register
  921.         1Ah,1Bh,1Ch,1Dh,1Eh,1Fh READ PARADISE REGISTERS 0,1,2,3,4,5
  922.         (port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh)
  923.         Return: BL = value of the paradise register
  924.             BH = 7Fh if successful
  925. Return: AL = 7Fh if successful (AT&T VDC600)
  926. SeeAlso: AX=007Eh
  927. ----------1001-------------------------------
  928. INT 10 - VIDEO - SET TEXT-MODE CURSOR SHAPE
  929.     AH = 01h
  930.     CH = bit 7    should be zero
  931.          bits 6,5 cursor blink
  932.              (00=normal, 01=invisible, 10=erratic, 11=slow)
  933.              (00=normal, other=invisible on EGA/VGA)
  934.          bits 4-0 top scan line containing cursor
  935.     CL = bottom scan line containing cursor (bits 0-4)
  936. Notes:    buggy on EGA systems--BIOS remaps cursor shape in 43 line modes, but
  937.       returns unmapped cursor shape
  938.     UltraVision scales size to the current font height by assuming 14-line
  939.       monochrome and 8-line color fonts; this call is not valid if cursor
  940.       emulation has been disabled
  941.     applications which wish to change the cursor by programming the
  942.       hardware directly on EGA or abovve should call INT 10/AX=1130h or
  943.       read 0040h:0085h first to determine the current font height
  944. BUG:    AMI 386 BIOS and AST Premier 386 BIOS will lock up the system if AL
  945.       is not equal to the current video mode
  946. SeeAlso: AH=03h,AX=CD05h
  947. ----------1002-------------------------------
  948. INT 10 - VIDEO - SET CURSOR POSITION
  949.     AH = 02h
  950.     BH = page number
  951.         0-3 in modes 2&3
  952.         0-7 in modes 0&1
  953.         0 in graphics modes
  954.     DH = row (00h is top)
  955.     DL = column (00h is left)
  956. SeeAlso: AH=03h,AH=05h
  957. ----------1003-------------------------------
  958. INT 10 - VIDEO - GET CURSOR POSITION AND SIZE
  959.     AH = 03h
  960.     BH = page number
  961.         0-3 in modes 2&3
  962.         0-7 in modes 0&1
  963.         0 in graphics modes
  964. Return: AX = 0000h (Phoenix BIOS)
  965.     CH = start scan line
  966.     CL = end scan line
  967.     DH = row (00h is top)
  968.     DL = column (00h is left)
  969. Notes:    a separate cursor is maintained for each of up to 8 display pages
  970.     many ROM BIOSes incorrectly return the default size for a color display
  971.       (start 06h, end 07h) when a monochrome display is attached
  972. SeeAlso: AH=01h,AH=02h
  973. ----------1004-------------------------------
  974. INT 10 - VIDEO - READ LIGHT PEN POSITION (except VGA)
  975.     AH = 04h
  976. Return: AH = light pen trigger flag
  977.         00h not down/triggered
  978.         01h down/triggered
  979.         DH,DL = row,column of character light pen is on
  980.         CH = pixel row (graphics modes 04h-06h)
  981.         CX = pixel row (graphics modes with >200 rows)
  982.         BX = pixel column
  983. Notes:    on a CGA, returned column numbers are always multiples of 2 (320-
  984.       column modes) or 4 (640-column modes)
  985.     returned row numbers are only accurate to two lines
  986. ----------1005-------------------------------
  987. INT 10 - VIDEO -  SELECT ACTIVE DISPLAY PAGE
  988.     AH = 05h
  989.     AL = new page number (00h to number of pages - 1) (see AH=00h)
  990. Note:    to determine whether the requested page actually exists, use AH=0Fh
  991.       to query the current page after making this call
  992. SeeAlso: AH=0Fh
  993. ----------1005-------------------------------
  994. INT 10 - VIDEO - MANIPULATE CRT/CPU PAGE REGISTERS (PCjr)
  995.     AH = 05h
  996.     AL = subfunction
  997.         80h read CRT and CPU page registers
  998.         Return: BH = CRT page register
  999.             BL = CPU page register
  1000.         81h set CPU page register
  1001.         BL = CPU page
  1002.         82h set CRT page register
  1003.         BH = CRT page
  1004.         83h set both CPU and CRT page registers
  1005.         BL = CPU page
  1006.         BH = CRT page
  1007. Notes:    the CPU page determines which 16K block of the first 128K of physical
  1008.       memory will be mapped at B800h by the hardware
  1009.     the CRT page determines the start address of the memory used by the
  1010.       video controller
  1011. ----------1005-------------------------------
  1012. INT 10 - VIDEO - GRAPHICS BITMAP BUFFER (Corona/Cordata BIOS v4.10+)
  1013.     AH = 05h
  1014.     AL =
  1015.         00h set address of graphics bitmap buffer (video modes 60h,61h)
  1016.         BX = segment of buffer
  1017.         0Fh get address of graphics bitmap buffer (video modes 60h,61h)
  1018.         Return: DX = segment of graphics bitmap buffer
  1019. ----------1006-------------------------------
  1020. INT 10 - VIDEO - SCROLL UP WINDOW
  1021.     AH = 06h
  1022.     AL = number of lines by which to scroll up (00h = clear entire window)
  1023.     BH = attribute used to write blank lines at bottom of window
  1024.     CH,CL = row,column of window's upper left corner
  1025.     DH,DL = row,column of window's lower right corner
  1026. Note:    affects only the currently active page (see AH=05h)
  1027. Warning: some implementations have a bug which destroys BP
  1028. SeeAlso: AH=07h,AH=72h,AH=73h,AX=7F07h
  1029. ----------1007-------------------------------
  1030. INT 10 - VIDEO - SCROLL DOWN WINDOW
  1031.     AH = 07h
  1032.     AL = number of lines by which to scroll down (00h=clear entire window)
  1033.     BH = attribute used to write blank lines at top of window
  1034.     CH,CL = row,column of window's upper left corner
  1035.     DH,DL = row,column of window's lower right corner
  1036. Note:    affects only the currently active page (see AH=05h)
  1037. Warning: some implementations have a bug which destroys BP
  1038. SeeAlso: AH=06h,AH=72h,AH=73h
  1039. ----------1008-------------------------------
  1040. INT 10 - VIDEO - READ CHARACTER AND ATTRIBUTE AT CURSOR POSITION
  1041.     AH = 08h
  1042.     BH = page number (00h to number of pages - 1) (see AH=00h)
  1043. Return: AH = attribute
  1044.         bit 7: blink
  1045.         bits 6-4: background color
  1046.             000 black
  1047.             001 blue
  1048.             010 green
  1049.             011 cyan
  1050.             100 red
  1051.             101 magenta
  1052.             110 brown
  1053.             111 white
  1054.         bits 3-0: foreground color
  1055.             0000 black     1000 dark gray
  1056.             0001 blue     1001 light blue
  1057.             0010 green     1010 light green
  1058.             0011 cyan     1011 light cyan
  1059.             0100 red     1100 light red
  1060.             0101 magenta     1101 light magenta
  1061.             0110 brown     1110 yellow
  1062.             0111 light gray     1111 white
  1063.     AL = character
  1064. Notes:    for monochrome displays, a foreground of 1 with background 0 is
  1065.       underlined 
  1066.     the blink bit may be reprogrammed to enable intense background colors
  1067.       using AX=1003h or by programming the CRT controller
  1068. SeeAlso: AH=09h,AX=1003h
  1069. ----------1009-------------------------------
  1070. INT 10 - VIDEO - WRITE CHARACTER AND ATTRIBUTE AT CURSOR POSITION
  1071.     AH = 09h
  1072.     AL = character to display
  1073.     BH = page number (00h to number of pages - 1) (see AH=00h)
  1074.     BL = attribute (text mode) or color (graphics mode)
  1075.          if bit 7 set in graphics mode, character is xor'ed onto screen
  1076.     CX = number of times to write character
  1077. Notes:    all characters are displayed, including CR, LF, and BS
  1078.     replication count in CX may produce an unpredictable result in graphics
  1079.       modes if it is greater than the number of positions remaining in the
  1080.       current row
  1081. SeeAlso: AH=08h,AH=0Ah,AH=4Bh,INT 17/AH=60h,INT 1F,INT 43,INT 44
  1082. ----------100A-------------------------------
  1083. INT 10 - VIDEO - WRITE CHARACTER ONLY AT CURSOR POSITION
  1084.     AH = 0Ah
  1085.     AL = character to display
  1086.     BH = page number (00h to number of pages - 1) (see AH=00h)
  1087.     BL = attribute (PCjr only) or color (graphics mode)
  1088.          if bit 7 set in graphics mode, character is xor'ed onto screen
  1089.     CX = number of times to write character
  1090. Notes:    all characters are displayed, including CR, LF, and BS
  1091.     replication count in CX may produce an unpredictable result in graphics
  1092.       modes if it is greater than the number of positions remaining in the
  1093.       current row
  1094. SeeAlso: AH=08h,AH=09h,AH=4Bh,INT 17/AH=60h,INT 1F,INT 43,INT 44
  1095. ----------100B--BH00-------------------------
  1096. INT 10 - VIDEO - SET BACKGROUND/BORDER COLOR
  1097.     AH = 0Bh
  1098.     BH = 00h
  1099.     BL = background/border color (border only in text modes)
  1100. SeeAlso: AH=0Bh/BH=01h
  1101. ----------100B--BH01-------------------------
  1102. INT 10 - VIDEO - SET PALETTE
  1103.     AH = 0BH
  1104.     BH = 01h
  1105.     BL = palette ID
  1106.         00h background, green, red, and brown/yellow
  1107.         01h background, cyan, magenta, and white
  1108. SeeAlso: AH=0Bh/BH=00h
  1109. ----------100C-------------------------------
  1110. INT 10 - VIDEO - WRITE GRAPHICS PIXEL
  1111.     AH = 0Ch
  1112.     BH = page number
  1113.     AL = pixel color (if bit 7 set, value is xor'ed onto screen)
  1114.     CX = column
  1115.     DX = row
  1116. Notes:    valid only in graphics modes
  1117.     BH is ignored if the current video mode supports only one page
  1118. SeeAlso: AH=0Dh,AH=46h
  1119. ----------100D-------------------------------
  1120. INT 10 - VIDEO - READ GRAPHICS PIXEL
  1121.     AH = 0Dh
  1122.     BH = page number
  1123.     CX = column
  1124.     DX = row
  1125. Return: AL = pixel color
  1126. Notes:    valid only in graphics modes
  1127.     BH is ignored if the current video mode supports only one page
  1128. SeeAlso: AH=0Ch,AH=47h
  1129. ----------100E-------------------------------
  1130. INT 10 - VIDEO - TELETYPE OUTPUT
  1131.     AH = 0Eh
  1132.     AL = character to write
  1133.     BH = page number
  1134.     BL = foreground color (graphics modes only)
  1135. Notes:    characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are interpreted
  1136.       and do the expected things
  1137.     IBM PC ROMs dated 4/24/81 and 10/19/81 require that BH be the same as
  1138.       the current active page
  1139. SeeAlso: AH=02h,AH=0Ah
  1140. ----------100F-------------------------------
  1141. INT 10 - VIDEO - GET CURRENT VIDEO MODE
  1142.     AH = 0Fh
  1143. Return: AH = number of character columns
  1144.     AL = display mode (see AH=00h)
  1145.     BH = active page (see AH=05h)
  1146. Notes:    if mode was set with bit 7 set ("no blanking"), the returned mode will
  1147.       also have bit 7 set
  1148.     EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h
  1149.       (monochrome) in all extended-row text modes
  1150. SeeAlso: AH=00h,AH=05h,AX=1130h,AX=CD04h
  1151. ----------100F56BX4756-----------------------
  1152. INT 10 - VUIMAGE DISPLAY DRIVER (v2.20 and below)
  1153.     AX = 0F56h
  1154.     BX = 4756h
  1155.     CX = 4944h
  1156.     DL = function
  1157.         01h installation check
  1158.         Return: AX = 5649h
  1159.             BX = 4443h
  1160.             CX = 5647h
  1161.             DH = 01h
  1162.         02h get first video mode's parameters
  1163.         Return: AX = BIOS mode number
  1164.             BX = widht in pixels
  1165.             CX = height in pixels
  1166.             DX = number of colors
  1167.         03h get next video mode's parameters
  1168.         Return: as for DL=02h
  1169.         04h display line???
  1170.         ES:DI -> record (see below)
  1171.         ???
  1172.         Return: ???
  1173. Notes:    VUIMAGE is a shareware GIF/TIFF image viewer by Offe Enterprises
  1174.     the use of TSR display drivers was discontinued after v2.20
  1175.  
  1176. Format of record for DL=04h:
  1177. Offset    Size    Description
  1178.  00h    WORD    row number
  1179.  02h    WORD    starting column???
  1180.  04h    WORD    ending column???
  1181.     ???
  1182. ----------1010-------------------------------
  1183. INT 10 - BIOS Window Extension v1.1 - SET WINDOW COORDINATES
  1184.     AH = 10h
  1185.     CH,CL = row,column of upper left corner of window
  1186.     DH,DL = row,column of lower right corner of window
  1187. Return: AL = status
  1188.         00h successful
  1189.         01h failed
  1190.     AH destroyed
  1191. Notes:    BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
  1192.     when a window has been set, all output via AH=0Eh is restricted to
  1193.       the specified window
  1194. SeeAlso: AH=11h"Window",AH=12h"Window"
  1195. ----------101000----------------------------
  1196. INT 10 - VIDEO - SET SINGLE PALETTE REGISTER (PCjr,EGA,MCGA,VGA)
  1197.     AX = 1000h
  1198.     BL = palette register number (00h-0Fh)
  1199.        = attribute register number (undocumented)
  1200.          10h attribute mode control register (should let BIOS control this)
  1201.          11h overscan color register (see also AX=1001h)
  1202.          12h color plane enable register (bits 3-0 enable corresponding
  1203.         text attribute bit)
  1204.          13h horizontal PEL panning register
  1205.          14h color select register
  1206.     BH = color or attribute register value
  1207. Notes:    on MCGA, only BX = 0712h is supported
  1208.     under UltraVision, the palette locking status (see AX=CD01h)
  1209.       determines the outcome
  1210. SeeAlso: AX=1002h,AX=1007h,AX=CD01h
  1211. ----------101001-----------------------------
  1212. INT 10 - VIDEO - SET BORDER (OVERSCAN) COLOR (PCjr,EGA,VGA)
  1213.     AX = 1001h
  1214.     BH = border color (00h-3Fh)
  1215. BUG:    the original IBM VGA BIOS incorrectly updates the parameter save area
  1216.       and places the border color at offset 11h of the palette table
  1217.       rather than offset 10h
  1218. Note:    under UltraVision, the palette locking status (see AX=CD01h)
  1219.       determines the outcome
  1220. SeeAlso: AX=1002h,AX=1008h,AX=CD01h
  1221. ----------101002-----------------------------
  1222. INT 10 - VIDEO - SET ALL PALETTE REGISTERS (PCjr,EGA,VGA)
  1223.     AX = 1002h
  1224.     ES:DX -> palette register list
  1225. Note:    under UltraVision, the palette locking status (see AX=CD01h)
  1226.       determines the outcome
  1227. SeeAlso: AX=1000h,AX=1001h,AX=1009h,AX=CD01h
  1228.  
  1229. Format of palette register list:
  1230. Offset    Size    Description
  1231.  00h 16 BYTEs    colors for palette registers 00h through 0Fh
  1232.  10h    BYTE    border color
  1233. ----------101003-----------------------------
  1234. INT 10 - VIDEO - TOGGLE INTENSITY/BLINKING BIT (Jr, PS, TANDY 1000, EGA, VGA)
  1235.     AX = 1003h
  1236.     BL = new state
  1237.         00h background intensity enabled
  1238.         01h blink enabled
  1239.     BH = 00h to avoid problems on some adapters
  1240. Notes:    although there is no function to get the current status, bit 5 of
  1241.       0040h:0065h indicates the state
  1242.     when configured for a monochrome display, the Boca Research Multi-EGA
  1243.       with ROM v M1.1 Type D has its screen disrupted if BH is not clear
  1244. SeeAlso: AH=08h
  1245. ----------101007-----------------------------
  1246. INT 10 - VIDEO - GET INDIVIDUAL PALETTE REGISTER (VGA,UltraVision v2+)
  1247.     AX = 1007h
  1248.     BL = palette or attribute (undoc) register number (see AX=1000h)
  1249. Return: BH = palette or attribute register value
  1250. Notes:    UltraVision v2+ supports this function even on color EGA systems in
  1251.       video modes 00h-03h, 10h, and 12h; direct programming of the palette
  1252.       registers will cause incorrect results because the EGA registers are
  1253.       write-only.  To guard against older versions or unsupported video
  1254.       modes, programs which expect to use this function on EGA systems
  1255.       should set BH to FFh on entry.
  1256. SeeAlso: AX=1000h,AX=1009h
  1257. ----------101008-----------------------------
  1258. INT 10 - VIDEO - READ OVERSCAN (BORDER COLOR) REGISTER (VGA,UltraVision v2+)
  1259.     AX = 1008h
  1260. Return: BH = border color (00h-3Fh)
  1261. Notes:    UltraVision v2+ supports this function even on color EGA systems in
  1262.       video modes 00h-03h, 10h, and 12h; direct programming of the palette
  1263.       registers will cause incorrect results because the EGA registers are
  1264.       write-only.  To guard against older versions or unsupported video
  1265.       modes, programs which expect to use this function on EGA systems
  1266.       should set BH to FFh on entry.
  1267. SeeAlso: AX=1001h
  1268. ----------101009-----------------------------
  1269. INT 10 - VIDEO - READ ALL PALETTE REGISTERS AND OVERSCAN REGISTER (VGA)
  1270.     AX = 1009h
  1271.     ES:DX -> 17-byte buffer (see AX=1002h)
  1272. Notes:    UltraVision v2+ supports this function even on color EGA systems in
  1273.       video modes 00h-03h, 10h, and 12h; direct programming of the palette
  1274.       registers will cause incorrect results because the EGA registers are
  1275.       write-only.  To guard against older versions or unsupported video
  1276.       modes, programs which expect to use this function on EGA systems
  1277.       should set the ES:DX buffer to FFh before calling.
  1278. SeeAlso: AX=1002h,AX=1007h,AX=CD02h
  1279. ----------101010-----------------------------
  1280. INT 10 - VIDEO - SET INDIVIDUAL DAC REGISTER (VGA/MCGA)
  1281.     AX = 1010h
  1282.     BX = register number
  1283.     CH = new value for green (0-63)
  1284.     CL = new value for blue (0-63)
  1285.     DH = new value for red (0-63)
  1286. SeeAlso: AX=1012h,AX=1015h
  1287. ----------101012-----------------------------
  1288. INT 10 - VIDEO - SET BLOCK OF DAC REGISTERS (VGA/MCGA)
  1289.     AX = 1012h
  1290.     BX = starting color register
  1291.     CX = number of registers to set
  1292.     ES:DX -> table of 3*CX bytes where each 3 byte group represents one
  1293.          byte each of red, green and blue (0-63)
  1294. SeeAlso: AX=1010h,AX=1017h
  1295. ----------101013-----------------------------
  1296. INT 10 - VIDEO - SELECT VIDEO DAC COLOR PAGE (VGA)
  1297.     AX = 1013h
  1298.     BL = subfunction
  1299.         00h select paging mode
  1300.         BH = 00h select 4 blocks of 64
  1301.         BH = 01h select 16 blocks of 16
  1302.         01h select page
  1303.         BH = page number (00h to 03h) or (00h to 0Fh)
  1304. Note:    not valid in mode 13h
  1305. SeeAlso: AX=101Ah
  1306. ----------101015-----------------------------
  1307. INT 10 - VIDEO - READ INDIVIDUAL DAC REGISTER (VGA/MCGA)
  1308.     AX = 1015h
  1309.     BL = palette register number
  1310. Return: DH = red value
  1311.     CH = green value
  1312.     CL = blue value
  1313. SeeAlso: AX=1010h,AX=1017h
  1314. ----------101017-----------------------------
  1315. INT 10 - VIDEO - READ BLOCK OF DAC REGISTERS (VGA/MCGA)
  1316.     AX = 1017h
  1317.     BX = starting palette register
  1318.     CX = number of palette registers to read
  1319.     ES:DX -> buffer (3 * CX bytes in size) (see also AX=1012h)
  1320. Return: buffer filled with CX red, green and blue triples
  1321. SeeAlso: AX=1012h,AX=1015h
  1322. ----------101018-----------------------------
  1323. INT 10 - VIDEO - undocumented - SET PEL MASK (VGA/MCGA)
  1324.     AX = 1018h
  1325.     BL = new PEL value
  1326. SeeAlso: AX=1019h
  1327. ----------101019-----------------------------
  1328. INT 10 - VIDEO - undocumented - READ PEL MASK (VGA/MCGA)
  1329.     AX = 1019h
  1330. Return:    BL = value read
  1331. SeeAlso: AX=1018h
  1332. ----------10101A-----------------------------
  1333. INT 10 - VIDEO - GET VIDEO DAC COLOR-PAGE STATE (VGA)
  1334.     AX = 101Ah
  1335. Return: BL = paging mode
  1336.         00h four pages of 64
  1337.         01h sixteen pages of 16
  1338.     BH = current page
  1339. SeeAlso: AX=1013h
  1340. ----------10101B-----------------------------
  1341. INT 10 - VIDEO - PERFORM GRAY-SCALE SUMMING (VGA/MCGA)
  1342.     AX = 101Bh
  1343.     BX = starting palette register
  1344.     CX = number of registers to convert
  1345. SeeAlso: AH=12h/BL=33h
  1346. ----------1010F0-----------------------------
  1347. INT 10 - VIDEO - Tseng ET-4000 BIOS - SET HiColor GRAPHICS MODE
  1348.     AX = 10F0h
  1349.     BL = video mode (see also AH=00h)
  1350.         32768-color modes:
  1351.         13h = 320x200
  1352.         2Dh = 640x350
  1353.         2Eh = 640x480
  1354.         2Fh = 640x400
  1355.         30h = 800x600
  1356. Return:    AX = 0000h if successful
  1357.          other on error
  1358. Note:    the Tseng HiColor BIOS extensions are supported by:
  1359.       Diamond Computer Systems    SpeedStar HiColor VGA
  1360.       Everex Systems        HC VGA
  1361.       Focus Information Systems    2theMax 4000
  1362.       Cardinal Technologies        VGA732
  1363.       Orchid ProDesigner IIs
  1364. SeeAlso: AX=10F1h
  1365. ----------1010F1-----------------------------
  1366. INT 10 - VIDEO - Tseng ET-4000 BIOS - GET DAC TYPE
  1367.     AX = 10F1h
  1368. Return: BL = type of digital/analog converter
  1369.         00h normal VGA DAC
  1370.         01h Sierra SC1148x HiColor DAC
  1371.        else other HiColor DAC
  1372. SeeAlso: AX=10F0h
  1373. ----------1011-------------------------------
  1374. INT 10 - BIOS Window Extension v1.1 - GET WINDOW COORDINATES
  1375.     AH = 11h
  1376. Return: CH,CL = row,column of upper left corner
  1377.     DH,DL = row,column of lower right corner
  1378. Note:    BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
  1379. SeeAlso: AH=10h"Window",AH=12h"Window"
  1380. ----------1011-------------------------------
  1381. INT 10 - VIDEO - TEXT-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA)
  1382.     AH = 11h
  1383.     The following functions will cause a mode set, completely resetting
  1384.     the video environment, but without clearing the video buffer
  1385.     AL = 00h, 10h: load user-specified patterns
  1386.         ES:BP -> user table
  1387.         CX      = count of patterns to store
  1388.         DX      = character offset into map 2 block
  1389.         BL      = block to load in map 2
  1390.         BH      = number of bytes per character pattern
  1391.     AL = 01h, 11h: load ROM monochrome patterns (8 by 14)
  1392.         BL      = block to load
  1393.     AL = 02h, 12h: load ROM 8 by 8 double-dot patterns
  1394.         BL      = block to load
  1395.     AL = 03h: set block specifier
  1396.         BL      = block specifier
  1397.            (EGA/MCGA) bits 0,1 = block selected by chars with attribute
  1398.                      bit 3 = 0
  1399.                   bits 2,3 = block selected by chars with attribute
  1400.                      bit 3 = 1
  1401.            (VGA) bits 0,1,4 = block selected by attribute bit 3 = 0
  1402.              bits 2,3,5 = block selected by attribute bit 3 = 1
  1403.     AL = 04h, 14h: load ROM 8x16 character set (VGA)
  1404.         BL    = block to load
  1405.     The routines called with AL=1xh are designed to be called only
  1406.     immediately after a mode set and are similar to the routines called
  1407.     with AL=0xh, except that:
  1408.           Page 0 must be active.
  1409.           Bytes/character is recalculated.
  1410.           Max character rows is recalculated.
  1411.           CRT buffer length is recalculated.
  1412.           CRTC registers are reprogrammed as follows:
  1413.              R09 = bytes/char-1 ; max scan line (mode 7 only)
  1414.              R0A = bytes/char-2 ; cursor start
  1415.              R0B = 0        ; cursor end
  1416.              R12 = ((rows+1)*(bytes/char))-1 ; vertical display end
  1417.              R14 = bytes/char    ; underline loc
  1418.                (*** BUG: should be 1 less ***)
  1419. SeeAlso: AX=CD10h
  1420. ----------1011-------------------------------
  1421. INT 10 - VIDEO - GRAPHICS-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA)
  1422.     AH = 11h
  1423.     AL = 20h: set user 8 by 8 graphics characters (INT 1F)
  1424.         ES:BP -> user table
  1425.     AL = 21h: set user graphics characters
  1426.         ES:BP -> user table
  1427.         CX      = bytes per character
  1428.         BL      = row specifier
  1429.            00h user set
  1430.               DL = number of rows
  1431.            01h 14 rows
  1432.            02h 25 rows
  1433.            03h 43 rows
  1434.     AL = 22h: ROM 8 by 14 set
  1435.         BL = row specifier (see above)
  1436.     AL = 23h: ROM 8 by 8 double dot
  1437.         BL = row specifier (see above)
  1438.     AL = 24h: load 8x16 graphics characters (VGA/MCGA)
  1439.         BL = row specifier (see above)
  1440.     AL = 29h: load 8x16 graphics characters (Compaq Systempro)
  1441.         BL = row specifier (see above)
  1442. Notes:    these functions are meant to be called only after a mode set
  1443.     UltraVision v2+ sets INT 43 to the appropriate font for AL=22h,23h,24h,
  1444.       and 29h
  1445. SeeAlso: INT 1F, INT 43
  1446. ----------101130-----------------------------
  1447. INT 10 - VIDEO - GET FONT INFORMATION (EGA, MCGA, VGA)
  1448.     AX = 1130h
  1449.     BH = pointer specifier
  1450.         00h INT 1Fh pointer
  1451.         01h INT 43h pointer
  1452.         02h ROM 8x14 character font pointer
  1453.         03h ROM 8x8 double dot font pointer
  1454.         04h ROM 8x8 double dot font (high 128 characters)
  1455.         05h ROM alpha alternate (9 by 14) pointer (EGA,VGA)
  1456.         06h ROM 8x16 font (MCGA, VGA)
  1457.         07h ROM alternate 9x16 font (VGA only)
  1458.         11h (UltraVision v2+) 8x20 font (VGA) or 8x19 font (autosync EGA)
  1459.         12h (UltraVision v2+) 8x10 font (VGA) or 8x11 font (autosync EGA)
  1460. Return: ES:BP = specified pointer
  1461.     CX    = bytes/character
  1462.     DL    = character rows on screen - 1
  1463. Note:    for UltraVision v2+, the 9xN alternate fonts follow the corresponding
  1464.       8xN font at ES:BP+256N
  1465. SeeAlso: AX=1100h,AX=1120h,INT 1F,INT 43
  1466. ----------1012-------------------------------
  1467. INT 10 - BIOS Window Extension v1.1 - GET BLANKING ATTRIBUTE
  1468.     AH = 12h
  1469. Return: BH = attribute to use on blanked lines when scrolling
  1470. Note:    BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
  1471. SeeAlso: AH=11h"Window",AH=12h"Window"
  1472. ----------1012--BL10-------------------------
  1473. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, EGA, VGA, MCGA) - GET EGA INFO
  1474.     AH = 12h
  1475.     BL = 10h
  1476. Return: BH = 00h color mode in effect (I/O port 3Dxh)
  1477.          01h mono mode in effect (I/O port 3Bxh)
  1478.     BL = 00h  64k bytes memory installed
  1479.          01h 128k bytes memory installed
  1480.          02h 192k bytes memory installed
  1481.          03h 256k bytes memory installed
  1482.     CH = feature bits
  1483.     CL = switch settings
  1484. Note:    one possible check for the presence of an EGA or later display card
  1485.       is to call this function with BH=FFh; if not present, BH will be
  1486.       unchanged on return
  1487. ----------1012--BL20-------------------------
  1488. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS,EGA,VGA,MCGA) - ALTERNATE PRTSC
  1489.     AH = 12h
  1490.     BL = 20h  select alternate print screen routine
  1491. Notes:    installs a PrtSc routine from the video card's BIOS to replace the
  1492.       default PrtSc handler from the ROM BIOS, which usually does not
  1493.       understand screen heights other than 25 lines
  1494.     some adapters disable print-screen instead of enhancing it
  1495. SeeAlso: INT 05
  1496. ----------1012--BL30-------------------------
  1497. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - SELECT VERTICAL RESOLUTION
  1498.     AH = 12h
  1499.     BL = 30h
  1500.     AL = vertical resolution
  1501.          00h 200 scan lines
  1502.          01h 350 scan lines
  1503.          02h 400 scan lines
  1504. Return: AL = 12h if function supported
  1505. ----------1012--BL31-------------------------
  1506. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - PALETTE LOADING
  1507.     AH = 12h
  1508.     BL = 31h
  1509.     AL = 00h enable default palette loading
  1510.          01h disable default palette loading
  1511. Return: AL = 12h if function supported
  1512. ----------1012--BL32-------------------------
  1513. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - VIDEO ADDRESSING
  1514.     AH = 12h
  1515.     BL = 32h
  1516.     AL = 00h enable video addressing
  1517.          01h disable video addressing
  1518. Return: AL = 12h if function supported
  1519. ----------1012--BL33-------------------------
  1520. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - GRAY-SCALE SUMMING
  1521.     AH = 12h
  1522.     BL = 33h
  1523.     AL = 00h enable gray scale summing
  1524.          01h disable gray scale summing
  1525. Return: AL = 12h if function supported
  1526. SeeAlso: AX=101Bh,AX=BF06h
  1527. ----------1012--BL34-------------------------
  1528. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - CURSOR EMULATION
  1529.     AH = 12h
  1530.     BL = 34h
  1531.     AL = 00h enable alphanumeric cursor emulation
  1532.          01h disable alphanumeric cursor emulation
  1533. Return: AL = 12h if function supported
  1534. ----------1012--BL35-------------------------
  1535. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS) - DISPLAY-SWITCH INTERFACE
  1536.     AH = 12h
  1537.     BL = 35h
  1538.     AL = 00h initial adapter video off
  1539.          01h initial planar video on
  1540.          02h switch active video off
  1541.          03h switch inactive video on
  1542.          80h *UNDOCUMENTED* set system board video active flag
  1543.     ES:DX -> buffer (128 byte save area if AL = 0, 2 or 3)
  1544. Return: AL = 12h if function supported
  1545. ----------1012--BL36-------------------------
  1546. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, VGA) - VIDEO REFRESH CONTROL
  1547.     AH = 12h
  1548.     BL = 36h
  1549.     AL = 00h enable refresh
  1550.          01h disable refresh
  1551. Return: AL = 12h if function supported
  1552. ----------1012--BH55-------------------------
  1553. INT 10 - VIDEO - ALTERNATE FUNC SELECT (ATI,Tatung,Taxan) - ENHANCED FEATURES
  1554.     AH = 12h
  1555.     BH = 55h
  1556.     BL = subfunction
  1557.         00h disabled enhanced features
  1558.         01h enable enhanced features
  1559.         02h get status
  1560.         Return: AL = status flags
  1561.                 bit 3: set if enhanced features enabled
  1562.                 bits 7-5 monitor type
  1563.                 000 PS/2 mono
  1564.                 001 PS/2 color
  1565.                 010 multi-sync
  1566.                 011 Taxan 650 25kHz
  1567.                 100 RGB
  1568.                 101 mono
  1569.                 110 EGA
  1570.                 111 Compaq internal
  1571.         03h disable register trapping (CGA emulation)
  1572.         04h enable register trapping
  1573.         05h program mode described by table at ES:BP
  1574.         06h get mode table
  1575.         AL = video mode
  1576.         Return: ES:BP -> table suitable for mode AL (and subfnc BL=05h)
  1577.             BP = FFFFh on error
  1578.  
  1579. Format of ATI VGA Wonder video mode table:
  1580. Offset    Size    Description
  1581.  00h    BYTE    number of columns
  1582.  01h    BYTE    maximum row (number of rows - 1)
  1583.  02h    BYTE    scan lines per row
  1584.  03h    WORD    video buffer size in bytes
  1585.  05h  4 BYTEs    values for Sequencer registers 1-4
  1586.  09h    BYTE    value for Miscellaneous Output register
  1587.  0Ah 25 BYTEs    values for CRTC registers 00h-18h
  1588.         00h horizontal total size (chars)
  1589.         01h horizontal displayed (chars)
  1590.         02h horizontal sync position (chars)
  1591.         03h horizontal sync width (chars)
  1592.         04h vertical total size (char rows)
  1593.         05h vertical total adjust (scan lines)
  1594.         06h vertical displayed (char rows)
  1595.         07h vertical sync position (char rows)
  1596.         08h interlace mode
  1597.         09h max scan line in row
  1598.         0Ah cursor start scan line
  1599.         0Bh cursor end scan line
  1600.         0Ch screen memory start (high)
  1601.         0Dh screen memory start (low)
  1602.         0Eh cursor address (high)
  1603.         0Fh cursor address (low)
  1604.         10h light pen (high)
  1605.         11h light pen (low)
  1606.  23h 20 BYTEs    default palette (values for Attribute Controller regs 00h-13h)
  1607.  37h  9 BYTEs    values for Graphics Controller registers 00h-08h
  1608. ----------1013-------------------------------
  1609. INT 10 - VIDEO - WRITE STRING (AT and later,EGA)
  1610.     AH = 13h
  1611.     AL = write mode
  1612.        bit 0: update cursor after writing
  1613.            1: string contains alternating characters and attributes
  1614.     BH = page number
  1615.     BL = attribute if string contains only characters
  1616.     CX = number of characters in string
  1617.     DH,DL = row,column at which to start writing
  1618.     ES:BP -> string to write
  1619. Notes:    recognizes CR, LF, BS, and bell
  1620.     also available PC or XT with EGA or higher
  1621.     HP 95LX only supports write mode 00h
  1622. BUG:    on the IBM VGA Adapter, any scrolling which may occur is performed on
  1623.       the active page rather than the requested page
  1624. SeeAlso: AH=09h,AH=0Ah
  1625. ----------101400-----------------------------
  1626. INT 10 - VIDEO - LOAD USER-SPECIFIED LCD CHARACTER FONT (CONV,Compaq Port 386)
  1627.     AX = 1400h
  1628.     ES:DI -> character font
  1629.     BH = number of bytes per character
  1630.         08h or 10h (Compaq)
  1631.     BL = 00h load main font (block 0)
  1632.          01h load alternate font (block 1)
  1633.     CX = number of characters to store
  1634.     DX = character offset into RAM font area
  1635. SeeAlso: AH=11h,AX=1401h
  1636. ----------101401-----------------------------
  1637. INT 10 - VIDEO - LOAD SYSTEM ROM DEFAULT LCD CHARACTER FONT (CONV,CP386)
  1638.     AX = 1401h
  1639.     BL = font to load
  1640.         00h main font (block 0)
  1641.         01h alternate font (block 1)
  1642. SeeAlso: AH=11h,AX=1400h
  1643. ----------101402-----------------------------
  1644. INT 10 - VIDEO - SET MAPPING OF LCD HIGH INTENSITY ATTRIBUTES (CONV,CP386)
  1645.     AX = 1402h
  1646.     BL = function
  1647.         00h ignore high intensity attribute
  1648.         01h map high intensity to underscore
  1649.         02h map high intensity to reverse video
  1650.         03h map high intensity to selected alternate font
  1651.         B0h half intensity (Compaq)
  1652.         B1h toggle active intensity bit interpretation (CP386)
  1653. ----------1015-------------------------------
  1654. INT 10 - VIDEO - GET PHYSICAL DISPLAY PARAMETERS (CONVERTIBLE)
  1655.     AH = 15h
  1656. Return: AX = alternate display adapter type
  1657.         0000h none
  1658.         5140h LCD
  1659.         5153h CGA
  1660.         5151h mono
  1661.     ES:DI -> parameter table (see below)
  1662. SeeAlso: AH=1Bh
  1663.  
  1664. Format of display parameter table:
  1665. Offset    Size    Description
  1666.  00h    WORD    monitor model number
  1667.  02h    WORD    vertical pixels per meter
  1668.  04h    WORD    horizontal pixels per meter
  1669.  06h    WORD    total vertical pixels
  1670.  08h    WORD    total horizontal pixels
  1671.  0Ah    WORD    horizontal pixel separation in micrometers
  1672.  0Ch    WORD    vertical pixel separation in micrometers
  1673. ----------1015-------------------------------
  1674. INT 10 - VIDEO - SET SUPERIMPOSE MODE (Sperry PC)
  1675.     AH = 15h
  1676.     AL = superimpose mode
  1677.         00h show graphics screen
  1678.         01h show text screen
  1679.         02h show text screen superimposed on graphics screen
  1680. ----------101A-------------------------------
  1681. INT 10 - VIDEO - DISPLAY COMBINATION (PS,VGA/MCGA)
  1682.     AH = 1Ah
  1683.     AL = 00h read display combination code
  1684.         Return: BL = active display code (see below)
  1685.             BH = alternate display code
  1686.          01h set display combination code
  1687.         BL = active display code (see below)
  1688.         BH = alternate display code
  1689. Return: AL = 1Ah if function was supported
  1690.  
  1691. Values for display combination code:
  1692.     00h no display
  1693.     01h monochrome adapter w/ monochrome display
  1694.     02h CGA w/ color display
  1695.     03h reserved
  1696.     04h EGA w/ color display
  1697.     05h EGA w/ monochrome display
  1698.     06h PGA w/ color display
  1699.     07h VGA w/ monochrome analog display
  1700.     08h VGA w/ color analog display
  1701.     09h reserved
  1702.     0Ah MCGA w/ digital color display
  1703.     0Bh MCGA w/ monochrome analog display
  1704.     0Ch MCGA w/ color analog display
  1705.     FFh unknown display type
  1706. ----------101B-------------------------------
  1707. INT 10 - VIDEO - FUNCTIONALITY/STATE INFORMATION (PS,VGA/MCGA)
  1708.     AH = 1Bh
  1709.     BX = implementation type
  1710.         0000h return funtionality/state information
  1711.     ES:DI -> 64 byte buffer for state information (see below)
  1712. Return: AL = 1Bh if function supported
  1713.         ES:DI buffer filled with state information
  1714. SeeAlso: AH=15h
  1715.  
  1716. Format of state information:
  1717. Offset    Size    Description
  1718.  00h    DWORD    address of static funtionality table (see below)
  1719.  04h    BYTE    video mode in effect
  1720.  05h    WORD    number of columns
  1721.  07h    WORD    length of regen buffer in bytes
  1722.  09h    WORD    starting address of regen buffer
  1723.  0Bh    WORD    cursor position for page 0
  1724.  0Dh    WORD    cursor position for page 1
  1725.  0Fh    WORD    cursor position for page 2
  1726.  11h    WORD    cursor position for page 3
  1727.  13h    WORD    cursor position for page 4
  1728.  15h    WORD    cursor position for page 5
  1729.  17h    WORD    cursor position for page 6
  1730.  19h    WORD    cursor position for page 7
  1731.  1Bh    WORD    cursor type
  1732.  1Dh    BYTE    active display page
  1733.  1Eh    WORD    CRTC port address
  1734.  20h    BYTE    current setting of register (3?8)
  1735.  21h    BYTE    current setting of register (3?9)
  1736.  22h    BYTE    number of rows
  1737.  23h    WORD    bytes/character
  1738.  25h    BYTE    display combination code of active display
  1739.  26h    BYTE    DCC of alternate display
  1740.  27h    WORD    number of colors supported in current mode
  1741.  29h    BYTE    number of pages supported in current mode
  1742.  2Ah    BYTE    number of scan lines active
  1743.         (0,1,2,3) = (200,350,400,480)
  1744.  2Bh    BYTE    primary character block
  1745.  2Ch    BYTE    secondary character block
  1746.  2Dh    BYTE    miscellaneous flags
  1747.         bit 0 all modes on all displays on
  1748.             1 gray summing on
  1749.             2 monochrome display attached
  1750.             3 default palette loading disabled
  1751.             4 cursor emulation enabled
  1752.             5 0 = intensity; 1 = blinking
  1753.             6 PS/2 P70 plasma display (without 9-dot wide font) active
  1754.             7 reserved
  1755.  2Eh  3 BYTEs    reserved (00h)
  1756.  31h    BYTE    video memory available
  1757.         00h = 64K, 01h = 128K, 02h = 192K, 03h = 256K
  1758.  32h    BYTE    save pointer state flags
  1759.         bit 0 512 character set active
  1760.             1 dynamic save area present
  1761.             2 alpha font override active
  1762.             3 graphics font override active
  1763.             4 palette override active
  1764.             5 DCC override active
  1765.             6 reserved
  1766.             7 reserved
  1767.  33h 13 BYTEs    reserved (00h)
  1768.  
  1769. Format of Static Functionality Table:
  1770. Offset    Size    Description
  1771.  00h    BYTE    modes supported #1
  1772.         bit 0 to bit 7 = 1 modes 0,1,2,3,4,5,6 supported
  1773.  01h    BYTE    modes supported #2
  1774.         bit 0 to bit 7 = 1 modes 8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh supported
  1775.  02h    BYTE    modes supported #3
  1776.         bit 0 to bit 3 = 1 modes 10h,11h,12h,13h supported
  1777.         bit 4 to bit 7 reserved
  1778.  03h  4 BYTEs    reserved
  1779.  07h    BYTE    scan lines supported
  1780.         bit 0 to bit 2 = 1 if scan lines 200,350,400 supported
  1781.  08h    BYTE    total number of character blocks available in text modes
  1782.  09h    BYTE    maximum number of active character blocks in text modes
  1783.  0Ah    BYTE    miscellaneous function flags #1
  1784.         bit 0 all modes on all displays function supported
  1785.             1 gray summing function supported
  1786.             2 character font loading function supported
  1787.             3 default palette loading enable/disable supported
  1788.             4 cursor emulation function supported
  1789.             5 EGA palette present
  1790.             6 color palette present
  1791.             7 color paging function supported
  1792.  0Bh    BYTE    miscellaneous function flags #2
  1793.         bit 0 light pen supported
  1794.             1 save/restore state function 1Ch supported
  1795.             2 intensity blinking function supported
  1796.             3 Display Combination Code supported
  1797.           4-7 reserved
  1798.  0Ch    WORD    reserved
  1799.  0Eh    BYTE    save pointer function flags
  1800.         bit 0 512 character set supported
  1801.             1 dynamic save area supported
  1802.             2 alpha font override supported
  1803.             3 graphics font override supported
  1804.             4 palette override supported
  1805.             5 DCC extension supported
  1806.             6 reserved
  1807.             7 reserved
  1808.  0Fh    BYTE    reserved
  1809. ----------101C-------------------------------
  1810. INT 10 - VIDEO - SAVE/RESTORE VIDEO STATE (PS50+,VGA)
  1811.     AH = 1Ch
  1812.     AL = 00h return state buffer size
  1813.         Return: BX = number of 64-byte blocks needed
  1814.          01h save video state
  1815.         ES:BX -> buffer
  1816.          02h restore video state
  1817.         ES:BX -> buffer containing previously saved state
  1818.     CX = requested states
  1819.          bit 0 video hardware
  1820.          1 BIOS data areas
  1821.          2 color registers and DAC state
  1822.           3-15 reserved
  1823. Return: AL = 1Ch if function supported
  1824. ----------103000CX0000-----------------------
  1825. INT 10 - VIDEO - LOCATE 3270PC CONFIGURATION TABLE (INSTALLATION CHECK)
  1826.     AX = 3000h
  1827.     CX = 0000h
  1828.     DX = 0000h
  1829. Return: CX:DX -> 3270PC configuration table (see below for format)
  1830.     CX:DX = 0000h:0000h if 3270PC Control Program not active
  1831.  
  1832. Format of 3270 PC configuration table:
  1833. Offset    Size    Description
  1834.  00h    BYTE    aspect ratio X
  1835.  01h    BYTE    aspect ratio Y
  1836.  02h    BYTE    monitor type
  1837.         00h = 5151 (mono) or 5272 (color)
  1838.         01h = 3295
  1839.         02h = 5151 or 5272 with XGA (???) graphics adapter
  1840.         03h = 5279 with 3270PC G adapter
  1841.         04h = 5379 model C01 with 3270PC GX adapter
  1842.         05h = 5379 model M01 with 3270PC GX adapter
  1843.         07h = non-3270PC with 3270 Workstation Program
  1844.         FFh = 3270PC Control Program not loaded
  1845.  03h    BYTE    reserved
  1846.  04h    BYTE    adapter ID
  1847.         00h = 5151/5272 adapter
  1848.         04h = 5151/5272 with XGA adapter
  1849.         30h = 3295 or 3270PC G/GX adapter
  1850.  05h    BYTE    reserved
  1851.  06h    BYTE    function flags 1
  1852.         bit 7: mono text, 1 page
  1853.             6: color text, 1 page
  1854.             5: color text, 4 pages
  1855.             4: CGA color graphics
  1856.             3: 720x350 two-color graphics
  1857.             2: 360x350 four-color graphics
  1858.             1: 720x350 eight-color graphics
  1859.  07h    BYTE    function flags 2
  1860.         bit 6: GPI graphics supported
  1861.  08h    WORD    segment address of Control Program Level table (see below)
  1862.  0Ah 10 BYTEs    reserved
  1863.  
  1864. Format of Control Program Level table:
  1865. Offset    Size    Description
  1866.  00h    WORD    program version
  1867.         02xxh = 3270PC Control Program v2.xx
  1868.         03xxh = 3270PC Control Program v3.xx
  1869.         04xxh = 3270 Workstation Program v1.xx
  1870.  02h    BYTE    Control Program ID (00h)
  1871.  03h 27 BYTEs    Control Program Descriptor ("IBM 3270 PC CONTROL PROGRAM")
  1872. ----------1040-------------------------------
  1873. INT 10 - VIDEO - SET GRAPHICS MODE (Hercules GRAFIX)
  1874.     AH = 40h
  1875. SeeAlso: AH=41h
  1876. ----------1041-------------------------------
  1877. INT 10 - VIDEO - SET TEXT MODE (Hercules GRAFIX)
  1878.     AH = 41h
  1879. SeeAlso: AH=40h
  1880. ----------1042-------------------------------
  1881. INT 10 - VIDEO - CLEAR CURRENT PAGE (Hercules GRAFIX)
  1882.     AH = 42h
  1883. SeeAlso: AH=45h
  1884. ----------1043-------------------------------
  1885. INT 10 - VIDEO - SELECT DRAWING PAGE (Hercules GRAFIX)
  1886.     AH = 43h
  1887.     AL = page number (0,1)
  1888. SeeAlso: AH=44h,AH=45h
  1889. ----------1044-------------------------------
  1890. INT 10 - VIDEO - SELECT DRAWING FUNCTION (Hercules GRAFIX)
  1891.     AH = 44h
  1892.     AL = drawing function
  1893.         00h clear pixels
  1894.         01h set pixels
  1895.         02h invert pixels
  1896. SeeAlso: AH=45h,AH=46h,AH=4Ch,AH=4Dh
  1897. ----------1045-------------------------------
  1898. INT 10 - VIDEO - SELECT PAGE TO DISPLAY (Hercules GRAFIX)
  1899.     AH = 45h
  1900.     AL = page number (0,1)
  1901. SeeAlso: AH=42h,AH=43h
  1902. ----------1046-------------------------------
  1903. INT 10 - VIDEO - DRAW ONE PIXEL (Hercules GRAFIX)
  1904.     AH = 46h
  1905.     DI = x (0-720)
  1906.     BP = y (0-347)
  1907. Note:    function 44h determines operation and function 43h which page to use
  1908. SeeAlso: AH=0Ch,AH=47h,AH=49h,AH=4Ch,AH=4Dh
  1909. ----------1047-------------------------------
  1910. INT 10 - VIDEO - FIND PIXEL VALUE (Hercules GRAFIX)
  1911.     AH = 47h
  1912.     DI = x (0-720)
  1913.     BP = y (0-347)
  1914. Return: AL = 00h pixel clear
  1915.     AL = 01h pixel set
  1916. Note:    function 43h specifies which page is used
  1917. SeeAlso: AH=0Dh,AH=46h
  1918. ----------1048-------------------------------
  1919. INT 10 - VIDEO - MOVE TO POINT (Hercules GRAFIX)
  1920.     AH = 48h
  1921.     DI = x (0-720)
  1922.     BP = y (0-347)
  1923. SeeAlso: AH=49h
  1924. ----------1049-------------------------------
  1925. INT 10 - VIDEO - DRAW TO POINT (Hercules GRAFIX)
  1926.     AH = 49h
  1927.     DI = x (0-720)
  1928.     BP = y (0-347)
  1929. Note:    function 48h or 49h specify first point, 44h operation and 43h page to
  1930.       use
  1931. SeeAlso: AH=43h,AH=44h,AH=48h,AH=4Ch,AH=4Dh
  1932. ----------104A-------------------------------
  1933. INT 10 - VIDEO - BLOCK FILL (Hercules GRAFIX)
  1934.     AH = 4Ah
  1935.     DI = x coordinate of lower left corner
  1936.     BP = y coordinate of lower left corner
  1937.     BX = height in pixels
  1938.     CX = width in pixels
  1939. Note:    draws a solid rectangle
  1940. SeeAlso: AH=4Eh
  1941. ----------104B-------------------------------
  1942. INT 10 - VIDEO - DISPLAY CHARACTER (Hercules GRAFIX)
  1943.     AH = 4Bh
  1944.     AL = character to display
  1945.     DI = x (0-720)
  1946.     BP = y (0-347)
  1947. Note:    unlike the other BIOS character functions character position is
  1948.       specified in pixels rather than rows and columns
  1949. SeeAlso: AH=09h,AH=0Ah
  1950. ----------104B-------------------------------
  1951. INT 10 - FRIEZE v7.0+ - API
  1952.     AH = 4Bh
  1953.     CL = function
  1954.         00h reserved
  1955.         01h load window
  1956.         ES:BX -> ASCIZ filename from which to read
  1957.         02h save window
  1958.         ES:BX -> ASCIZ filename to which to write
  1959.         07h set window size
  1960.         ES:BX -> four-WORD structure with Xmin, Ymin, Xmax, Ymax
  1961.         09h set patterns
  1962.         ES:BX -> 16-BYTE vector of screen->printer color correspondnces
  1963.         0Ah get patterns
  1964.         ES:BX -> 16-BYTE buffer for color correspondences
  1965.         0Bh set mode
  1966.         AL = mode
  1967.         0Fh get window
  1968.         ES:BX -> four-WORD buffer for Xmin, Ymin, Xmax, Ymax
  1969.         10h set print options
  1970.         ES:BX -> printer options in same format as FRIEZE cmdline
  1971.         14h get version
  1972.         Return: AH = major version (00h if FRIEZE version before 7)
  1973.             AL = minor version
  1974.         15h set parameters
  1975.         ES:BX -> parameter table (see below)
  1976.         16h get parameters
  1977.         ES:BX -> buffer for parameter table (see below)
  1978.         17h get printer resolution
  1979.         ES:BX -> 12-WORD table for six horizontal/vertical resol pairs
  1980.         18h reserved (v8.0 only)
  1981. Return: AX = status
  1982.         00h successful
  1983.         01h user aborted printout with ESC
  1984.         02h reserved
  1985.         03h file read error
  1986.         04h file write error
  1987.         05h file not found
  1988.         06h invalid header (not an image or wrong screen mode)
  1989.         07h file close error
  1990.         08h disk error
  1991.         09h printer error
  1992.         0Ah invalid function
  1993.         0Bh can't create file
  1994.         0Ch wrong video mode
  1995.  
  1996. Format of parameter table:
  1997. Offset    Size    Description
  1998.  00h    WORD    top margin (1/100 inch)
  1999.  02h    WORD    left margin (1/100 inch)
  2000.  04h    WORD    horizontal size (1/100 inch)
  2001.  06h    WORD    vertical size (1/100 inch)
  2002.  08h    WORD    quality/draft mode
  2003.         00h draft mode
  2004.         01h quality mode
  2005.         02h use horizontal/vertical resolution for output resolution
  2006.  0Ah    WORD    printer horizontal resolution (dots per inch)
  2007.  0Ch    WORD    printer vertical resolution (dots per inch)
  2008.  0Eh    WORD    reserved (FFFFh)
  2009. Note:    any field which should remain unchanged may be filled with FFFFh
  2010. ----------104C-------------------------------
  2011. INT 10 - VIDEO - DRAW ARC (Hercules GRAFIX)
  2012.     AH = 4Ch
  2013.     AL = quadrant (1 = upper right, 2 = upper left, etc)
  2014.     DI = x coordinate of center
  2015.     BP = y coordinate of center
  2016.     BX = radius
  2017. SeeAlso: AH=49h,AH=4Dh
  2018. ----------104D-------------------------------
  2019. INT 10 - VIDEO - DRAW CIRCLE (Hercules GRAFIX)
  2020.     AH = 4Dh
  2021.     DI = x of center
  2022.     BP = y of center
  2023.     BX = radius
  2024. SeeAlso: AH=49h,AH=4Ch
  2025. ----------104E-------------------------------
  2026. INT 10 - VIDEO - FILL AREA (Hercules GRAFIX)
  2027.     AH = 4Eh
  2028.     DI = x coordinate of an interior point
  2029.     BP = y coordinate of an interior point
  2030. Notes:    fills convex polygonal areas
  2031.     the first fill makes the figure solid, the second erases it
  2032. SeeAlso: AH=4Ah
  2033. ----------104F00-----------------------------
  2034. INT 10 - VESA SuperVGA BIOS - GET SuperVGA INFORMATION
  2035.     AX = 4F00h
  2036.     ES:DI -> 256-byte buffer for SuperVGA information (see below)
  2037. Return: AL = 4Fh function supported
  2038.     AH = status
  2039.         00h successful
  2040.         01h failed
  2041. SeeAlso: AX=4F01h,AX=7F00h
  2042.  
  2043. Format of SuperVGA information:
  2044. Offset    Size    Description
  2045.  00h  4 BYTEs    signature ('VESA')
  2046.  04h    WORD    VESA version number
  2047.  06h    DWORD    pointer to OEM name
  2048.         "761295520" for ATI
  2049.  0Ah  4 BYTEs    capabilities
  2050.  0Eh    DWORD    pointer to list of supported VESA and OEM video modes
  2051.         (list of words terminated with FFFFh)
  2052.  12h 238 BYTEs    reserved
  2053. ----------104F01-----------------------------
  2054. INT 10 - VESA SuperVGA BIOS - GET SuperVGA MODE INFORMATION
  2055.     AX = 4F01h
  2056.     CX = SuperVGA video mode
  2057.     ES:DI -> 256-byte buffer mode information (see below)
  2058. Return: AL = 4Fh function supported
  2059.     AH = status
  2060.         00h successful
  2061.         01h failed
  2062. SeeAlso: AX=4F00h,AX=4F02h
  2063.  
  2064. Format of mode information:
  2065. Offset    Size    Description
  2066.  00h    WORD    mode attributes
  2067.         bit 0: mode supported
  2068.         bit 1: optional information available
  2069.         bit 2: BIOS output supported
  2070.         bit 3: set if color, clear if monochrome
  2071.         bit 4: set if graphics mode, clear if text mode
  2072.  02h    BYTE    window A attributes
  2073.         bit 0: exists
  2074.         bit 1: readable
  2075.         bit 2: writable
  2076.         bits 3-7 reserved
  2077.  03h    BYTE    window B attributes (as for window A)
  2078.  04h    WORD    window granularity in K
  2079.  06h    WORD    window size in K
  2080.  08h    WORD    start segment of window A
  2081.  0Ah    WORD    start segment of window B
  2082.  0Ch    DWORD    -> FAR window positioning function (equivalent to AX=4F05h)
  2083.  10h    WORD    bytes per scan line
  2084. ---remainder is optional for VESA modes, needed for OEM modes---
  2085.  12h    WORD    width in pixels
  2086.  14h    WORD    height in pixels
  2087.  16h    BYTE    width of character cell in pixels
  2088.  17h    BYTE    height if character cell in pixels
  2089.  18h    BYTE    number of memory planes
  2090.  19h    BYTE    number of bits per pixel
  2091.  1Ah    BYTE    number of banks
  2092.  1Bh    BYTE    memory model type
  2093.  1Ch    BYTE    size of bank in K
  2094. ----------104F02-----------------------------
  2095. INT 10 - VESA SuperVGA BIOS - SET SuperVGA VIDEO MODE
  2096.     AX = 4F02h
  2097.     BX = mode
  2098.         bit 15 set means don't clear video memory
  2099. Return: AL = 4Fh function supported
  2100.     AH = status
  2101.         00h successful
  2102.         01h failed
  2103. SeeAlso: AX=4F01h,AX=4F03h
  2104.  
  2105. Values for VESA video mode:
  2106.  00h-FFh OEM video modes (see AH=00h)
  2107.  100h    640x400x256
  2108.  101h    640x480x256
  2109.  102h    800x600x16
  2110.  103h    800x600x256
  2111.  104h    1024x768x16
  2112.  105h    1024x768x256
  2113.  106h    1280x1024x16
  2114.  107h    1280x1024x256
  2115.  108h    80x60 text
  2116.  109h    132x25 text
  2117.  10Ah    132x43 text
  2118.  10Bh    132x50 text
  2119.  10Ch    132x60 text
  2120. ----------104F03-----------------------------
  2121. INT 10 - VESA SuperVGA BIOS - GET CURRENT VIDEO MODE
  2122.     AX = 4F03h
  2123. Return: AL = 4Fh function supported
  2124.     AH = status
  2125.         00h successful
  2126.         01h failed
  2127.     BX = video mode (see AX=4F02h)
  2128. SeeAlso: AX=4F02h
  2129. ----------104F04-----------------------------
  2130. INT 10 - VESA SuperVGA BIOS - SAVE/RESTORE SuperVGA VIDEO STATE
  2131.     AX = 4F04h
  2132.     DL = subfunction
  2133.         00h get state buffer size
  2134.         Return: BX = number of 64-byte blocks needed
  2135.         01h save video states
  2136.         ES:BX -> buffer
  2137.         02h restore video states
  2138.         ES:BX -> buffer
  2139.     CX = flags for states to save/restore
  2140.         bit 0: video hardware state
  2141.         bit 1: video BIOS data state
  2142.         bit 2: video DAC state
  2143.         bit 3: SuperVGA state
  2144. Return: AL = 4Fh function supported
  2145.     AH = status
  2146.         00h successful
  2147.         01h failed
  2148. ----------104F05-----------------------------
  2149. INT 10 - VESA SuperVGA BIOS - CPU VIDEO MEMORY CONTROL
  2150.     AX = 4F05h
  2151.     BH = subfunction
  2152.         00h select video memory window
  2153.         DX = window address in video memory (in granularity units)
  2154.         01h get video memory window
  2155.         Return: DX = window address in video memory (in gran. units)
  2156.     BL = window number
  2157.         00h window A
  2158.         01h window B
  2159. Return: AL = 4Fh function supported
  2160.     AH = status
  2161.         00h successful
  2162.         01h failed
  2163. SeeAlso: AX=4F06h,AX=4F07h,AX=7000h/BX=0004h
  2164. ----------104F06-----------------------------
  2165. INT 10 - VESA SuperVGA BIOS v1.1 - GET/SET LOGICAL SCAN LINE LENGTH
  2166.     AX = 4F06h
  2167.     BL = function
  2168.         00h set scan line length
  2169.         CX = desired width in pixels
  2170.         01h get scan line length
  2171. Return: AL = 4Fh if function supported
  2172.     AH = status
  2173.         00h successful
  2174.         01h failed
  2175.     BX = bytes per scan line
  2176.     CX = number of pixels per scan line
  2177.     DX = maximum number of scan lines
  2178. Notes:    if the desired width is not achievable, the next larger width will be
  2179.       set
  2180.     the scan line may be wider than the visible area of the screen
  2181.     this function is valid in text modes, provided that values are
  2182.       multiplied by the character cell width/height
  2183. SeeAlso: AX=4F01h,AX=4F05h,AX=4F07h
  2184. ----------104F07BH00-------------------------
  2185. INT 10 - VESA SuperVGA BIOS v1.1 - GET/SET DISPLAY START
  2186.     AX = 4F07h
  2187.     BH = 00h (reserved)
  2188.     BL = 00h set display start
  2189.         CX = leftmost displayed pixel in scan line
  2190.         DX = first displayed scan line
  2191.        = 01h get display start
  2192.         Return: BH = 00h
  2193.             CX = leftmost displayed pixel in scan line
  2194.             DX = first displayed scan line
  2195. Return: AL = 4Fh if function supported
  2196.     AH = status
  2197.         00h successful
  2198.         01h failed
  2199. Note:    this function is valid in text modes, provided that values are
  2200.       multiplied by the character cell width/height
  2201. SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h
  2202. ----------104FFF-----------------------------
  2203. INT 10 - VESA SuperVGA BIOS - Everex - TURN VESA ON/OFF
  2204.     AX = 4FFFh
  2205.     DL = new state (00h off, 01h on)
  2206. ----------1050-------------------------------
  2207. INT 10 - SCROLOCK.COM - INSTALLATION CHECK
  2208.     AH = 50h
  2209. Return: BX = 1954h if installed
  2210.         AL = 00 if inactive, nonzero if active
  2211. Note:    SCROLOCK is a utility supplied with System Enhancement Associates' ARC
  2212. SeeAlso: AH=51h
  2213. ----------105001-----------------------------
  2214. INT 10 - VIDEO - AX PC - GET SCREEN COUNTRY CODE
  2215.     AX = 5001h
  2216. Return: BX = 0053h Japan
  2217.        = other not Japan
  2218. SeeAlso: AH=00h,INT 21/AH=38h
  2219. ----------1051-------------------------------
  2220. INT 10 - SCROLOCK.COM - ENABLE/DISABLE
  2221.     AH = 51h
  2222.     AL = state
  2223.         00h disable
  2224.         nonzero enable
  2225. Note:    SCROLOCK is a utility supplied with System Enhancement Associates' ARC
  2226. SeeAlso: AH=50h"SCROLOCK"
  2227. ----------1053-------------------------------
  2228. INT 10 - Show Partner F/X v3.6 - START PRESENTATION
  2229.     AH = 53h
  2230.     DS:DX -> ASCIZ name of presentation file (no path, extension forced to
  2231.         .PR2)
  2232. Return: ???
  2233. SeeAlso: AH=55h
  2234. ----------1055-------------------------------
  2235. INT 10 - Show Partner F/X v3.6 - UNINSTALL
  2236.     AH = 55h
  2237. Return: FXSHOW.EXE removed from memory
  2238. SeeAlso: AH=53h
  2239. ----------105555-----------------------------
  2240. INT 10 - VIDEO - ATI EGA/VGA Wonder Super Switch - INSTALLATION CHECK
  2241.     AX = 5555h
  2242. Return: AX = AAAAh    if installed
  2243.     BX:CX -> ??? routine in SMS.COM resident portion
  2244.           -> data area in VCONFIG
  2245. Note:    Super Switch (SMS.COM) is a video mode switch program supplied with
  2246.       ATI EGA Wonder. It also maps video mode 08h to 27h or 23h.
  2247. SeeAlso: INT 10/AH=00h,INT 2F/AX=6400h
  2248.  
  2249. Format of data area:
  2250. Offset    Size    Description
  2251.  00h    DWORD    original INT 09 vector
  2252.  04h    DWORD    original INT 10 vector
  2253.  08h    DWORD    original INT 1C vector
  2254.  0Ch    WORD    screen saver state, 0=off, 1=on
  2255.  0Eh    WORD    blanking interval in clock ticks
  2256. ----------106A00BX0000-----------------------
  2257. INT 10 - Direct Graphics Interface Standard (DGIS) - INQUIRE AVAILABLE DEVICES
  2258.     AX = 6A00h
  2259.     BX = 0000h
  2260.     CX = 0000h
  2261.     DX = buffer length (may be 0)
  2262.     ES:DI -> buffer
  2263. Return: BX = number of bytes stored in buffer
  2264.     CX = bytes required for all descriptions (0 if no DGIS)
  2265. Note:    buffer contains descriptions and addresses of DGIS-compatible
  2266.       display(s) and printer(s)
  2267. SeeAlso: AX=6A02h
  2268. ----------106A01CX0000-----------------------
  2269. INT 10 - DGIS - REDIRECT CHARACTER OUTPUT
  2270.     AX = 6A01h
  2271.     CX = 0000h
  2272.     ES:DI = address of device to send INT 10 output to
  2273. Return: CX = 0000h  output could not be redirected
  2274.          else INT 10h output now routed to requested display
  2275. SeeAlso: AX=6A02h
  2276. ----------106A02-----------------------------
  2277. INT 10 - DGIS - INQUIRE INT 10 OUTPUT DEVICE
  2278.     AX = 6A02h
  2279.     ES:DI = 0000h:0000h
  2280. Return: ES:DI = 0000h:0000h  if current display is non-DGIS
  2281.         else address of the current DGIS INT 10 display
  2282. SeeAlso: AX=6A00h,AX=6A01h
  2283. ----------106E00------------------------------------
  2284. INT 10 - Paradise VGA internal - GET ???
  2285.     AX = 6E00h
  2286. Return: AH = ??? (depends on serial number)
  2287.     AL = ???
  2288.     BX = ???
  2289.     CL = ???
  2290.     CH = ???
  2291.     DX = ???
  2292. SeeAlso: AX=6E04,AX=6E05
  2293. ----------106E04-------------------------------------
  2294. INT 10 - Paradise VGA internal - GET SCREEN SIZE AND ???
  2295.     AX = 6E04h
  2296. Return: BX = screen width (columns)
  2297.     CX = screen height (lines)
  2298.     AH = ??? (05h or FFh)
  2299.     AL = ??? (04h or video mode)
  2300. SeeAlso: AX=6E00,AX=6E05
  2301. ----------106E05-------------------------------------
  2302. INT 10 - Paradise VGA internal - SET MODE
  2303.     AX = 6E05h
  2304.     BL = mode
  2305. Note:    like AH=0, AL=BL.
  2306. SeeAlso: AH=00,AX=6E00,AX=6E04,AX=6F05h
  2307. ----------106F00-----------------------------
  2308. INT 10 - VIDEO - INSTALLATION CHECK (Video7 VGA,VEGA VGA)
  2309.     AX = 6F00h
  2310. Return: BX = 5637h ('V7') indicates Video7 VGA/VEGA VGA extensions are present
  2311. ----------106F01-----------------------------
  2312. INT 10 - VIDEO - GET MONITOR INFO (Video7 VGA,VEGA VGA)
  2313.     AX = 6F01h
  2314. Return: AL = monitor type code (VEGA VGA only)
  2315.     AH = status register information
  2316.          bit  0 = display enable
  2317.             0 = display enabled
  2318.             1 = vertical or horizontal retrace in progress
  2319.          bit  1 = light pen flip flop set
  2320.          bit  2 = light pen switch activated
  2321.          bit  3 = vertical sync
  2322.          bit  4 = monitor resolution
  2323.             0 = high resolution (>200 lines)
  2324.             1 = low resolution (<=200 lines)
  2325.          bit  5 = display type
  2326.             0 = color
  2327.             1 = monochrome
  2328.          bits6,7= diagnostic bits
  2329. Note:    bits 0-3 are the same as the EGA/VGA status register bits 0-3
  2330. ----------106F04-----------------------------
  2331. INT 10 - VIDEO - GET MODE AND SCREEN RESOLUTION (Video7 VGA, VEGA VGA)
  2332.     AX = 6F04h
  2333. Return: AL = current video mode (see AX=6F05h)
  2334.     BX = horizontal columns (text) or pixels (graphics)
  2335.     CX = vertical columns (text) or pixels (graphics)
  2336. SeeAlso: AX=6F05h
  2337. ----------106F05-----------------------------
  2338. INT 10 - VIDEO - SET VIDEO MODE (Video7 VGA, VEGA EXTENDED EGA/VGA)
  2339.     AX = 6F05h
  2340.     BL = mode (see below)
  2341. SeeAlso: AH=00h,AX=0070h
  2342.  
  2343. Values for video mode:
  2344.       text/ text pixel     pixel    colors    disp    scrn  system
  2345.       grph resol  box    resoltn        page    addr
  2346.  00h-13h = standard IBM modes (see AH=00h)
  2347.  40h = T   80x43  8x8                     Video7/VEGA VGA
  2348.  41h = T  132x25  8x14                     Video7/VEGA VGA
  2349.  42h = T  132x43  8x8                     Video7/VEGA VGA
  2350.  43h = T   80x60  8x8                     Video7/VEGA VGA
  2351.  44h = T  100x60  8x8                     Video7/VEGA VGA
  2352.  45h = T  132x28  8x8                     Video7/VEGA VGA
  2353.  60h = G        752x410      16             Video7 VGA, VEGA VGA
  2354.  61h = G        720x540      16             Video7 VGA, VEGA VGA
  2355.      = G        720x540      16             Northgate, Headland 1024i
  2356.  62h = G        800x600      16             Video7 VGA, VEGA Ext EGA
  2357.      = G        800x600      16             Headland 1024i
  2358.  63h = G           1024x768       2             Video7 VGA
  2359.  64h = G           1024x768       4             Video7 VGA
  2360.  65h = G           1024x768      16             Video7 VGA, VEGA Ext EGA
  2361.      = G           1024x768      16             Headland 1024i
  2362.  66h = G        640x400     256             Video7 VGA, VEGA Ext VGA
  2363.      = G        640x400     256             Northgate, Headland 1024i
  2364.  67h = G        640x480     256             Video7 VGA, VEGA Ext VGA
  2365.      = G        640x480     256             Headland 1024i
  2366.  68h = G        720x540     256             Video7 VGA, VEGA Ext VGA
  2367.      = G        720x540     256             Headland 1024i
  2368.  69h = G        800x600     256             Video7 VGA, VEGA Ext VGA
  2369.      = G        800x600     256             Headland 1024i
  2370.  70h = G        752x410      16gray         Video7 VGA, VEGA VGA
  2371.  71h = G        720x540      16gray         Video7 VGA, VEGA VGA
  2372.  72h = G        800x600      16gray         Video7 VGA
  2373.  73h = G           1024x768       2gray         Video7 VGA
  2374.  74h = G           1024x768       4gray         Video7 VGA
  2375.  75h = G           1024x768      16gray         Video7 VGA
  2376.  76h = G        640x400     256gray         Video7 VGA
  2377.  77h = G        640x480     256gray         Video7 VGA
  2378.  78h = G        720x540     256gray         Video7 VGA
  2379.  79h = G        800x600     256gray         (future)
  2380. SeeAlso: AH=00h,AX=0070h,AX=007Eh,AX=6F04h
  2381. ----------106F06-----------------------------
  2382. INT 10 - VIDEO - SELECT AUTOSWITCH MODE (V7VGA,VEGA VGA)
  2383.     AX = 6F06h
  2384.     BL = Autoswitch mode select
  2385.          00h select EGA/VGA-only modes
  2386.          01h select Autoswitched VGA/EGA/CGA/MGA modes
  2387.          02h select 'bootup' CGA/MGA modes
  2388.     BH = enable/disable (00h enable, 01h = disable selection)
  2389. ----------106F07-----------------------------
  2390. INT 10 - VIDEO - GET VIDEO MEMORY CONFIGURATION (V7VGA,VEGA VGA)
  2391.     AX = 6F07h
  2392. Return: AL = 6Fh
  2393.     AH = bits 0-6 = number of 256K blocks of video memory
  2394.          bit 7    = DRAM/VRAM (0: DRAM, 1: VRAM)
  2395.     BH = chip revision (SR8F) (S/C Chip in VEGA VGA)
  2396.     BL = chip revision (SR8E) (G/A Chip in VEGA VGA)
  2397.     CX = 0000h
  2398. SeeAlso: AH=12h/BL=10h
  2399. ----------1070-------------------------------
  2400. INT 10 - VIDEO - GET ADDRESS OF VIDEO RAM (TANDY 2000 only)
  2401.     AH = 70h
  2402. Return: AX:BX -> WORD containing green plane's offset
  2403.     AX:CX -> WORD containing green plane's segment
  2404.     AX:DX -> WORD containing segment of red (offset 0) and blue (offset
  2405.             4000) planes
  2406. SeeAlso: AH=71h
  2407. ----------107000BX0000-----------------------
  2408. INT 10 - Everex Extended Video BIOS - RETURN EMULATION STATUS
  2409.     AX = 7000h
  2410.     BX = 0000h
  2411. Return: AL = 70h if Trident-based Everex card
  2412.     CL = monitor type
  2413.         00h mono
  2414.         01h CGA
  2415.         02h EGA
  2416.         03h digital multifrequency
  2417.         04h IBM PS/2
  2418.         05h IBM 8514
  2419.         06h SuperVGA
  2420.         07h analog multifrequency
  2421.         08h super multifrequency
  2422.     CH = feature bits
  2423.         bits 7,6: 00 = 256K memory
  2424.               01 = 512K memory
  2425.               10 = 1024K
  2426.               11 = 2048K memory
  2427.         bit 5:    special oscillator present
  2428.         bit 4:    VGA protect enabled
  2429.         bit 0:    6845 emulation
  2430.     DX = video board info
  2431.         bits 4-15: board ID model
  2432.         bits 0-3:  board ID revision
  2433.     DI = BCD BIOS version number
  2434. Note:    board models for Trident-based Everex cards:
  2435.         236h Ultragraphics II
  2436.         620h Vision VGA
  2437.         673h EVGA
  2438.         678h Viewpoint
  2439. ----------107000BX0004-----------------------
  2440. INT 10 - Everex Extended Video BIOS - GET PAGING FUNCTION POINTER FOR CURR MODE
  2441.     AX = 7000h
  2442.     BX = 0004h
  2443. Return: ES:DI -> FAR paging function (call with DL = page to set)
  2444. Note:    the word preceding ES:DI is the length of the function in bytes, and
  2445.       the last byte of the function is a FAR return instruction.
  2446. SeeAlso: AX=4F05h,AX=7000h/BX=0000h,AX=7000h/BX=0005h
  2447. ----------107000BX0005-----------------------
  2448. INT 10 - Everex Extended Video BIOS - GET SUPPORTED MODE INFO
  2449.     AX = 7000h
  2450.     BX = 0005h
  2451.     CL = maximum number of modes to get info for
  2452.     CH = mode type to get info for (see below)
  2453.     DL = monitor type to get info for
  2454.     ES:DI -> buffer for mode info (see below)
  2455. Return: CL = total number of modes fitting criteria
  2456.     CH = size of each info record
  2457. SeeAlso: AX=7000h/BX=0000h,AX=7000h/BX=0004h
  2458.  
  2459. Values for mode type:
  2460.  00h all modes
  2461.  01h monochrome text modes
  2462.  02h color text modes
  2463.  03h four-color CGA graphics modes
  2464.  04h two-color CGA graphics modes
  2465.  05h 16-color graphics modes
  2466.  06h 256-color graphics modes
  2467.  
  2468. Format of mode information record:
  2469. Offset    Size    Description
  2470.  00h    BYTE    mode number (bit 7 set if extended mode)
  2471.  01h    BYTE    mode type (see above)
  2472.  02h    BYTE    info bits
  2473.         bits 7,6 reserved
  2474.              5     monochrome mode
  2475.              4     interlaced display
  2476.              3     requires special oscillator
  2477.              2,1 memory required
  2478.              00 = 256K
  2479.              01 = 512K
  2480.              10 = 1024K
  2481.              11 = 2048K
  2482.              0     reserved
  2483.  03h    BYTE    font height
  2484.  04h    BYTE    text columns on screen
  2485.  05h    BYTE    text rows on screen
  2486.  06h    WORD    number of scan lines
  2487.  08h    BYTE    color information
  2488.         bits 7-4 reserved
  2489.              3-0 bits per pixel
  2490. ----------1071-------------------------------
  2491. INT 10 - VIDEO - GET ADDRESS OF INCRAM (TANDY 2000 only)
  2492.     AH = 71h
  2493. Return: AX:BX -> WORD containing segment address of INCRAM
  2494.     AX:CX -> WORD containing offset of INCRAM
  2495. SeeAlso: AH=70h
  2496. ----------1072-------------------------------
  2497. INT 10 - VIDEO - SCROLL RIGHT PART OR ALL OF SCREEN (TANDY 2000 only)
  2498.     AH = 72h
  2499.     AL = number of columns to shift scroll area, 00h to clear entire area
  2500.     BH = new attributes for blanked columns at left
  2501.     CH,CL = row, column of upper left corner of scroll area
  2502.     DH,DL = row, column of lower right corner of scroll area
  2503. SeeAlso: AH=06h,AH=07h,AH=73h,INT 15/AH=12h/BH=05h
  2504. ----------1073------------------------------
  2505. INT 10 - VIDEO - SCROLL LEFT PART OR ALL OF SCREEN (TANDY 2000 only)
  2506.     AH = 73h
  2507.     AL = number of columns to shift scroll area, 00h to clear entire area
  2508.     BH = new attributes for blanked columns at right
  2509.     CH,CL = row, column of upper left corner of scroll area
  2510.     DH,DL = row, column of lower right corner of scroll area
  2511. SeeAlso: AH=06h,AH=07h,AH=72h,INT 15/AH=12h/BH=05h
  2512. ----------107F00-----------------------------
  2513. INT 10 - SOLLEX SuperVGA - GET EXTENSIONS INFO
  2514.     AX = 7F00h
  2515. Return: AL != 7Fh if not supported
  2516.     AL = 7Fh if supported
  2517.         AH = status
  2518.         00h successful
  2519.             ES:DI -> info structure (see below)
  2520.         01h failed
  2521. SeeAlso: AX=4F00h
  2522.  
  2523. Format of info structure:
  2524. Offset    Size    Description
  2525.  00h    DWORD    pointer to VESA function dispatch table
  2526.  04h    DWORD    pointer to SOLLEX function dispatch table
  2527.  08h    DWORD    pointer to VESA SuperVGA info (see AX=4F00h)
  2528.  0Ch    DWORD    pointer to mode info structure table, consisting of
  2529.         alternating ResInfo (see below) and VESA mode information
  2530.         (see AX=4F01h) blocks, terminated with an FFFFh word
  2531.  10h    DWORD    pointer to font info structure table (see below)
  2532.  14h    WORD    high resolution crystal frequency in Hz (0000h = not present)
  2533.  16h    DWORD    pointer to ASCIZ ID string
  2534.  1Ah    DWORD    pointer to timeout reset table
  2535.         array of bytes, each a multiple of the minimum time increment
  2536.  1Eh    WORD    minimum time increment in timer ticks
  2537.  20h    BYTE    inverse options supported
  2538.         bit 0: inverse supported
  2539.         bits 1-7: reserved
  2540.  21h    BYTE    normal color value
  2541.  22h    BYTE    inverse color value
  2542.  23h    WORD    port to be accessed for normal/inverse settings
  2543.  25h    WORD    type of interface chip (currently undefined)
  2544.  27h    WORD    program operational mode
  2545.         bits 1-0: 00 no preference
  2546.               01 terse (minimum detail in program messages)
  2547.               10 verbose
  2548.               11 use menus if supported, verbose mode otherwise
  2549.         bits 7-2: reserved
  2550.  29h    WORD    SOLLEX specification version
  2551.  2Bh    WORD    version of VESA/SOLLEX implementation
  2552.  2Dh    DWORD    offset to relocatable portion of SOLLEX extensions (for CONFIG)
  2553.  2Eh    DWORD    offset to unused section of the extensions ROM
  2554.  31h 16 BYTEs    reserved
  2555. Note:    all DWORD pointers initially require segment fixups; if the segment
  2556.       is 0000h, it should be changed to the returned ES, otherwise it
  2557.       may be assumed to be correct
  2558.  
  2559. Format of ResInfo:
  2560. Offset    Size    Description
  2561.  00h    WORD    16-bit mode number
  2562.  02h    WORD    adapter type (00h VGA, 01h EGA, 02h CGA, 03h MDA)
  2563.  04h    WORD    display info (see AX=7F01h/BL=01h)
  2564.  06h    DWORD    pointer to video parameter table
  2565.  0Ah    BYTE    replacement entry in master Video Parameter
  2566.  0Bh    BYTE    mode requested for mode set by BIOS
  2567.  0Ch    DWORD    pointer to LoadReg table
  2568.  10h    BYTE    index into table of clock values (see below)
  2569.  
  2570. Format of font info table [array] entry:
  2571. Offset    Size    Description
  2572.  00h    BYTE    required font height
  2573.  01h    BYTE    parameter to load text mode font
  2574.  02h    BYTE    parameter to load graphics mode font
  2575.  
  2576. Values for clock value index:
  2577.  00h    25 MHz
  2578.  01h    28 MHz
  2579.  02h    PCLK
  2580.  03h    31.5 MHz (VESA 640x480)
  2581.  04h    reserved
  2582.  05h    16 MHz (EGA)
  2583.  06h    PCLK
  2584.  07h    24 MHz (EGA)
  2585.  08h    25 MHz
  2586.  09h    28 MHz
  2587.  0Ah    36 MHz
  2588.  0Bh    45 MHz (for 1024x768)
  2589.  0Ch    80 MHz
  2590.  0Dh    40 MHz
  2591.  0Eh    65 MHz
  2592.  0Fh     1 MHz (for powerdown)
  2593. ----------107F01BL00-------------------------
  2594. INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - SET ADAPTER
  2595.     AX = 7F01h
  2596.     BL = 00h
  2597.     CX = adapter request
  2598.         bits 1-0: adapter type (00 VGA, 01 EGA, 10 CGA, 11 MDA)
  2599.         bit 2:    reserved
  2600.         bits 4-3: change displays (00 none, 01 analog 10 digital 11 panel)
  2601.         bits 6-5: desired monitor sense (01 color, 10 mono, 11=8514)
  2602.         bit 7:    lock override
  2603.         bit 8:    alternate adapter mode
  2604.         bits 15-9: reserved
  2605. Return: AL != 7Fh if not supported
  2606.     AL = 7Fh if supported
  2607.         AH = status
  2608.         00h successful
  2609.         01h failed
  2610. Note:    initializes video hardware to a particular standard
  2611. SeeAlso: AX=7F00h,AX=7F01h/BL=01h,AX=7F01h/BL=02h
  2612. ----------107F01BL01-------------------------
  2613. INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - GET ADAPTER
  2614.     AX = 7F01h
  2615.     BL = 01h
  2616. Return: AL != 7Fh if not supported
  2617.     AL = 7Fh if supported
  2618.         AH = status
  2619.         00h successful
  2620.         01h failed
  2621.         BX = adapter type (see AX=7F01h/BL=00h)
  2622.         DX = display type
  2623.         bits 1-0: monitor sense (00 none, 01 color, 10 mono, 11=8514)
  2624.         bit 2:      multi-frequency analog monitor active
  2625.         bit 3:      LCD panel active
  2626.         bit 4:      plasma/electroluminescent panel active
  2627.         bit 5:      PS/2-type monitor active
  2628.         bit 6:      multi-frequency digital monitor active
  2629.         bit 7:      Enhanced Color Display monitor active
  2630.         bit 8:      alternate display active
  2631.         bits 15-9: reserved
  2632. SeeAlso: AX=7F00h,AX=7F01h/BL=00h,AX=7F01h/BL=02h
  2633. ----------107F01BL02-------------------------
  2634. INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - DETERMINE ADAPTER SUPPORT
  2635.     AX = 7F01h
  2636.     BL = 02h
  2637.     CX = adapter request (see AX=7F01h/BL=00h)
  2638. Return: AL != 7Fh if not supported
  2639.     AL = 7Fh if supported
  2640.         AH = status
  2641.         00h requested setting can successfully be made
  2642.         01h requested setting not available in this configuration
  2643. SeeAlso: AX=7F00h,AX=7F01h/BL=00h
  2644. ----------107F02BL00-------------------------
  2645. INT 10 - SOLLEX SuperVGA - DISPLAY OUTPUT CONTROL - SET DISPLAY OUTPUT
  2646.     AX = 7F02h
  2647.     BL = 00h
  2648.     CX = display output setting
  2649.         bit 0: CRTC control in bits 2,1 valid
  2650.         bit 1: enable digital output
  2651.         bit 2: enable analog output
  2652.         bit 3: panel control in bits 5,4 valid
  2653.         bit 4: enable LCD output
  2654.         bit 5: enable plasma/EL output
  2655.         bit 6: inverse control in bit 7 valid
  2656.         bit 7: 0=normal, 1=inverse
  2657.         bits 15-8 reserved
  2658. Return: AL != 7Fh if not supported
  2659.     AL = 7Fh if supported
  2660.         AH = status
  2661.         00h successful
  2662.         01h failed
  2663. SeeAlso: AX=7F00h,AX=7F02h/BL=00h
  2664. ----------107F02BL01-------------------------
  2665. INT 10 - SOLLEX SuperVGA - DISPLAY OUTPUT CONTROL - GET DISPLAY OUTPUT
  2666.     AX = 7F02h
  2667.     BL = 01h
  2668. Return: AL != 7Fh if not supported
  2669.     AL = 7Fh if supported
  2670.         AH = status
  2671.         00h successful
  2672.             BX = display output setting (see AX=7F02h/BL=00h)
  2673.             CX = displays attached
  2674.             bit 0: PS/2 display on analog output
  2675.             bit 1: multi-frequency monitor on analog output
  2676.             bit 2: LCD panel attached
  2677.             bit 3: plasma/electroluminescent panel attached
  2678.             bit 4: multi-frequency monitor on digital output
  2679.             bit 5: Enhanced Color Display attached to digital outpt
  2680.             bit 6: alternate display
  2681.             bits 15-7: reserved
  2682.         01h failed
  2683. SeeAlso: AX=7F00h,AX=7F02h/BL=00h
  2684. ----------107F03BL00-------------------------
  2685. INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - GET SUPPORT INFO
  2686.     AX = 7F03h
  2687.     BL = 00h
  2688.     CX = support type
  2689.         0000h VGA, 0001h EGA, 0002h CGA, 0003h MDA, 0004h extensions,
  2690.         0005h-0012h reserved for SOLLEX, 0013h Hercules,
  2691.         0014h-001Fh reserved for SOLLEX, 0020h-00FFh reserved for OEM
  2692. Return: AL != 7Fh if not supported
  2693.     AL = 7Fh if supported
  2694.         AH = status
  2695.         00h successful
  2696.             CX = size of video support code
  2697.             DX = segment of physical video support (0000h if no ROM)
  2698.             ES = segment of active video support
  2699.             ES:DI -> information block (DI = 0000h if none available)
  2700.         01h failed
  2701. SeeAlso: AX=7F03h/BL=01h
  2702. ----------107F03BL01-------------------------
  2703. INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - INITIALIZE VIDEO SUPPORT
  2704.     AX = 7F03h
  2705.     BL = 01h
  2706.     CX = support request
  2707.     ES = segment of support code
  2708. Return: AL != 7Fh if not supported
  2709.     AL = 7Fh if supported
  2710.         AH = status
  2711.         00h successful
  2712.         01h failed
  2713. Note:    initializes the indicated video support by calling ES:0003h; this
  2714.       function may be used to switch the active video support back to
  2715.       ROM after AX=7F03h/BL=02h
  2716. SeeAlso: AX=7F03h/BL=00h
  2717. ----------107F03BL02-------------------------
  2718. INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - GO RAM RESIDENT
  2719.     AX = 7F03h
  2720.     BL = 02h
  2721.     CX = support request
  2722.     ES = destination segment
  2723. Return: AL != 7Fh if not supported
  2724.     AL = 7Fh if supported
  2725.         AH = status
  2726.         00h successful
  2727.         01h failed
  2728. SeeAlso: AX=7F00h,AX=7F03h/BL=01h
  2729. ----------107F04BL00-------------------------
  2730. INT 10 - SOLLEX SuperVGA - POWER CONTROL - SET POWER STATE
  2731.     AX = 7F04h
  2732.     BL = 00h
  2733.     CX = new power state
  2734. Return: AL != 7Fh if not supported
  2735.     AL = 7Fh if supported
  2736.         AH = status
  2737.         00h successful
  2738.         01h failed
  2739. Note:    higher values progressively reduce the operations available on the
  2740.       video adapter while yielding increasing power savings
  2741. SeeAlso: AX=7F00h,AX=7F04h/BL=01h
  2742. ----------107F04BL01-------------------------
  2743. INT 10 - SOLLEX SuperVGA - POWER CONTROL - GET POWER STATE
  2744.     AX = 7F04h
  2745.     BL = 01h
  2746. Return: AL != 7Fh if not supported
  2747.     AL = 7Fh if supported
  2748.         AH = status
  2749.         00h successful
  2750.             CX = current power state
  2751.             DX = maximum state
  2752.         01h failed
  2753. SeeAlso: AX=7F00h,AX=7F04h/BL=00h
  2754. ----------107F04BL02-------------------------
  2755. INT 10 - SOLLEX SuperVGA - POWER CONTROL - SET TIMEOUT RESET
  2756.     AX = 7F04h
  2757.     BL = 02h
  2758.     CX = timeout reset
  2759. Return: AL != 7Fh if not supported
  2760.     AL = 7Fh if supported
  2761.         AH = status
  2762.         00h successful
  2763.         01h failed
  2764. SeeAlso: AX=7F00h,AX=7F04h/BL=03h
  2765. ----------107F04BL03-------------------------
  2766. INT 10 - SOLLEX SuperVGA - POWER CONTROL - GET TIMEOUT RESET
  2767.     AX = 7F04h
  2768.     BL = 03h
  2769. Return: AL != 7Fh if not supported
  2770.     AL = 7Fh if supported
  2771.         AH = status
  2772.         00h successful
  2773.             BX = time increment
  2774.             CX = current timeout reset
  2775.             DX = maximum timeout reset
  2776.             ES:DI -> timeout reset table (array of bytes)
  2777.         01h failed
  2778. Note:    the timeout period is computed as (BYTE ES:[DI+CX]) * BX timer ticks
  2779. SeeAlso: AX=7F00h,AX=7F04h/BL=02h
  2780. ----------107F05-----------------------------
  2781. INT 10 - SOLLEX SuperVGA - LOAD REGISTER
  2782.     AX = 7F05h
  2783.     ES:DI -> register value table (see below)
  2784. Return: AL != 7Fh if not supported
  2785.     AL = 7Fh if supported
  2786.         AH = status
  2787.         00h successful
  2788.         01h failed
  2789. SeeAlso: AH=F1h,AH=F3h,AH=F5h
  2790.  
  2791. Format of register value table:
  2792. Offset    Size    Description
  2793.  00h    WORD    base I/O register (FFFFh = end of list)
  2794.  02h 2N BYTEs    pairs of values to be written to the base I/O register as an
  2795.         index value and the following register as a data byte
  2796.  2N+2    WORD    FFFFh (end of data list)
  2797.     ... (repeats until FFFFh base address)
  2798. ----------107F06-----------------------------
  2799. INT 10 - SOLLEX SuperVGA - MULTIPLE FONT CONTROL
  2800.     AX = 7F06h
  2801.     BL = subfunction
  2802.         00h set multiple font state
  2803.         CX = new state (00h off, 01h on)
  2804.         01h get multiple font state
  2805.         Return: BL = current state (00h off, 01h on)
  2806. Return: AL != 7Fh if not supported
  2807.     AL = 7Fh if supported
  2808.         AH = status
  2809.         00h successful
  2810.         01h failed
  2811. SeeAlso: AH=11h
  2812. ----------107F07-----------------------------
  2813. INT 10 - SOLLEX SuperVGA - FILL VIDEO RAM
  2814.     AX = 7F07h
  2815.     BL = how much to fill
  2816.        00h regen size
  2817.        01h all video memory
  2818.     CX = pattern to write (normally 0720h for text modes and 0000h for gr)
  2819. Return: AL != 7Fh if not supported
  2820.     AL = 7Fh if supported
  2821.         AH = status
  2822.         00h successful
  2823.         01h failed
  2824. SeeAlso: AH=06h
  2825. ----------1080--DX4456-----------------------
  2826. INT 10 - VIDEO (DESQview 2.0x only) - internal - SET ??? HANDLER
  2827.     AH = 80h
  2828.     DX = 4456h ('DV')
  2829.     ES:DI -> FAR subroutine to be called on ???
  2830. Return: DS = segment of DESQview data structure for video buffer
  2831. Note:    this function is probably meant for internal use only, due to the magic
  2832.       value required in DX
  2833.     the subroutine seems to be called when the DESQview menu is accessed;
  2834.       on entry, AL = 03h or 04h
  2835. ----------1081--DX4456-----------------------
  2836. INT 10 - VIDEO (DESQview 2.0x only) - internal - GET ???
  2837.     AH = 81h
  2838.     DX = 4456h ('DV')
  2839. Return: ES = segment of DESQview data structure for video buffer
  2840.         BYTE ES:[0] = current window number in DV 2.0x
  2841. Note:    this function is probably meant for internal use only, due to the magic
  2842.       value required in DX
  2843. SeeAlso: AH=82h
  2844. ----------1082--DX4456-----------------------
  2845. INT 10 - VIDEO (DESQview 2.0x only) - internal - GET CURRENT WINDOW INFO
  2846.     AH = 82h
  2847.     DX = 4456h ('DV')
  2848. Return: DS = segment in DESQview for data structure
  2849.          in DV 2.00,
  2850.           BYTE DS:[0] = window number
  2851.           WORD DS:[1] = segment of other data structure
  2852.           WORD DS:[3] = segment of window's object handle
  2853.     ES = segment of DESQview data structure for video buffer
  2854.     AL = current window number
  2855.     AH = ???
  2856.     BL = direct screen writes
  2857.         00h program does not do direct writes
  2858.         01h program does direct writes, so shadow buffer not usable
  2859.     BH = ???
  2860.     CL = current video mode
  2861.     CH = ???
  2862. Note:    this function is probably meant for internal use only, due to the magic
  2863.       value required in DX
  2864. SeeAlso: AH=81h
  2865. ----------108B-------------------------------
  2866. INT 10 - Alloy MW386 - FORCE WORKSTATION SCREEN UPDATE
  2867.     AH = 8Bh
  2868. SeeAlso: AH=92h,AH=93h
  2869. ----------1090-------------------------------
  2870. INT 10 - Alloy MW386 - GET PHYSICAL WORKSTATION DISPLAY MODE
  2871.     AH = 90h
  2872. Return: AL = current video mode (see AH=00h)
  2873. SeeAlso: AH=91h
  2874. ----------1091-------------------------------
  2875. INT 10 - Alloy MW386 - GET PHYSICAL WORKSTATION ADAPTER TYPE
  2876.     AH = 91h
  2877. Return: AL = video adapter type
  2878.         00h monochrome
  2879.         01h Hercules monochrome graphics
  2880.         02h CGA
  2881.         03h EGA
  2882.         04h VGA
  2883.         80h monochrome text terminal
  2884.         81h Hercules graphics terminal
  2885.         82h color graphics terminal
  2886. Note:    types less than 80h do not imply that the current user is on the host
  2887. SeeAlso: AH=90h
  2888. ----------1092-------------------------------
  2889. INT 10 - Alloy MW386 - INHIBIT WORKSTATION SCREEN UPDATES
  2890.     AH = 92h
  2891. Note:    the terminal will be updated even when screen updates are inhibited if
  2892.       TTY output is used
  2893. SeeAlso: AH=8Bh
  2894. ----------1093-------------------------------
  2895. INT 10 - Alloy MW386 - REDRAW SCREEN
  2896.     AH = 93h
  2897. SeeAlso: AH=8Bh
  2898. ----------10BF00-----------------------------
  2899. INT 10 - VIDEO - Compaq Portable Extensions - SELECT EXTERNAL MONITOR
  2900.     AX = BF00h
  2901. Note:    all registers preserved and the internal monitor is blanked
  2902.     the external monitor becomes the active monitor
  2903. SeeAlso: AX=BF01h
  2904. ----------10BF01-----------------------------
  2905. INT 10 - VIDEO - Compaq Portable Extensions - SELECT INTERNAL MONITOR
  2906.     AX = BF01h
  2907. Note:    all registers preserved and the external monitor is blanked
  2908.     the internal monitor becomes the active monitor
  2909. SeeAlso: AX=BF00h
  2910. ----------10BF02-----------------------------
  2911. INT 10 - VIDEO - Compaq Portable Extensions - SET MASTER MODE OF CURRENT CTRLR
  2912.     AX = BF02h
  2913.     BH = master mode
  2914.         04h CGA
  2915.         05h EGA
  2916.         07h MDA
  2917. SeeAlso: AX=BF03h
  2918. ----------10BF03BX0000-----------------------
  2919. INT 10 - VIDEO - Compaq Portable/Systempro Extensions - GET ENVIRONMENT
  2920.     AX = BF03h
  2921.     BX = 0000h
  2922. Return: BH = active monitor
  2923.         00h = external
  2924.         01h = internal
  2925.     BL = master mode
  2926.         00h = switchable VDU not present
  2927.         04h = CGA
  2928.         05h = EGA
  2929.         07h = MDA
  2930.         08h = switchable LCD controller present
  2931.     CH = 00h (reserved)
  2932.     CL = switchable VDU mode supported
  2933.         bit     0   = CGA supported
  2934.         bits 1,2 = reserved (1)
  2935.         bit     3   = MDA supported
  2936.         bits 4-7 = reserved (1)
  2937.     DH = internal monitor type
  2938.         00h = none
  2939.         01h = Dual-mode monitor
  2940.         02h = 5153 RGB monitor
  2941.         03h = Compaq Color monitor
  2942.         04h = 640x400 flat panel
  2943.         07h = LCD VGA
  2944.     DL = external monitor type
  2945.         00h = none
  2946.         01h = dual-mode monitor
  2947.         02h = 5153 RGB monitor
  2948.         03h = Compaq Color monitor
  2949.         04h = 640x400 flat panel
  2950.         05h = VGC monochrome
  2951.         06h = VGC color
  2952. SeeAlso: AH=1Ah,AX=BF00h,AX=BF01h,AX=BF02h
  2953. ----------10BF04-----------------------------
  2954. INT 10 - VIDEO - Compaq Portable Extensions - SET MODE SWITCH DELAY
  2955.     AX = BF04h
  2956.     BH = new state of delay
  2957.         00h enabled
  2958.         01h disabled
  2959. SeeAlso: AX=BF05h
  2960. ----------10BF05-----------------------------
  2961. INT 10 - VIDEO - Compaq Systempro Extensions - ENABLE/DISABLE DISPLAY
  2962.     AX = BF05h
  2963.     BH = new state of video
  2964.         00h off
  2965.         01h on
  2966. SeeAlso: AX=BF04h
  2967. ----------10BF06-----------------------------
  2968. INT 10 - VIDEO - Compaq SLT/286 - READ GRAY SCALE TABLE
  2969.     AX = BF06h
  2970.     CL = address to be read from gray scale table
  2971. Return: AL = bit 3-0 - Value read from gray scale table
  2972.     CL = address to be read from gray scale table
  2973. SeeAlso: AH=12h/BL=33h,AX=BF07h
  2974. ----------10BF07-----------------------------
  2975. INT 10 - VIDEO - Compaq SLT/286 - WRITE GRAY SCALE TABLE
  2976.     AX = BF07h
  2977.     CH = value to write to gray scale table
  2978.     CL = address to be written to gray scale table
  2979. SeeAlso: AX=BF06h
  2980. ----------10BF08-----------------------------
  2981. INT 10 - VIDEO - Compaq SLT/286 - WRITE COLOR MIX REGISTERS
  2982.     AX = BF08h
  2983.     CH = bits 7-4 - Green weight
  2984.          bits 3-0 - Blue weight
  2985.     CL = bits 7-4 - unused
  2986.          bits 3-0 - Red weight
  2987. ----------10CC00SI0000-----------------------
  2988. INT 10 - VIDEO - UltraVision - GET STATUS (INSTALLATION CHECK)
  2989.     AX = CC00h
  2990.     SI = 0000h (if checking version)
  2991. Return: CX = ABCDh
  2992.     AL = Ultravision extensions
  2993.         00h enabled
  2994.         FFh disabled
  2995.     AH = card designator
  2996.     BX:00F0h -> palette values (for compatibility with NEWFONT)
  2997.     DX = support for high resolution modes
  2998.         00h not active
  2999.         01h active
  3000.     SI = UltraVision version number (v1.2+), high byte=major,low byte=minor
  3001.        = unchanged for versions <1.2
  3002. SeeAlso: AX=CC01h,AX=CC02h
  3003. ----------10CC01-----------------------------
  3004. INT 10 - VIDEO - UltraVision - DISABLE EXTENSIONS
  3005.     AX = CC01h
  3006. Notes:    subsequent BIOS calls will be passed through to previous handler
  3007.     should be followed immediately by mode set to restore normal EGA/VGA
  3008.       state
  3009. SeeAlso: AX=CC02h
  3010. ----------10CC02-----------------------------
  3011. INT 10 - VIDEO - UltraVision - ENABLE EXTENSIONS
  3012.     AX = CC02h
  3013. Note:    should be followed immediately by mode set to restore previous
  3014.       UltraVision state
  3015. SeeAlso: AX=CC01h
  3016. ----------10CD00-----------------------------
  3017. INT 10 - VIDEO - UltraVision - LOAD ULTRAVISION PALETTE (color EGA,VGA)
  3018.     AX = CD00h
  3019.     CL = palette table number (01h-07h for v1.x, 01h-0Fh for v2+)
  3020.     DS:DX -> 16-byte palette register list (colors for registers 00h-0Fh)
  3021. Notes:    if palette locking is in effect for the current mode, the new colors
  3022.       will be displayed immediately; otherwise, the system reverts to the
  3023.       default palette
  3024.     palette table 0 is reserved for the default palette and cannot be set
  3025.     UltraVision always sets the border color to black
  3026. SeeAlso: AX=CD01h,AX=CD02h
  3027. ----------10CD01-----------------------------
  3028. INT 10 - VIDEO - UltraVision - SET PALETTE LOCKING STATUS (color EGA,VGA)
  3029.     AX = CD01h
  3030.     CL = palette locking value
  3031.         00h none
  3032.         01h text modes only (02h,03h)
  3033.         FFh all modes (all standard color text and graphics modes)
  3034. Notes:    intended for video modes with 16 or fewer colors
  3035. SeeAlso: AX=1000h,AX=1002h,AX=CD00h,AX=CD03h
  3036. ----------10CD02-----------------------------
  3037. INT 10 - VIDEO - UltraVision - GET ULTRAVISION PALETTE (EGA,VGA)
  3038.     AX = CD02h
  3039. Return: CL = palette table number
  3040.     DS:DX -> 17-byte palette register list
  3041.     DS:SI -> current font names table (see below)
  3042. Note:    only the font names are valid on monochrome EGA systems
  3043. SeeAlso: AX=1009h,AX=CD00h
  3044.  
  3045. Format of palette register list:
  3046. Offset    Size    Description
  3047.  00h 16 BYTEs    colors for palette registers 00h through 0Fh
  3048.  10h    BYTE    border color
  3049.  
  3050. Format of current font names table (v2+):
  3051. Offset    Size    standard EGA    HiRes EGA    VGA
  3052.  00h  8 BYTEs    N/A        F19 font    F20 font
  3053.  08h  8 BYTEs    F14 font    F14 font    F14 font
  3054.  10h  8 BYTEs    N/A        F11 font    F10 font
  3055.  18h  8 BYTEs    F8 font        F8 font        F8 font
  3056.  
  3057. Format of current font names table (v1.x):
  3058. Offset    Size    HiRes EGA
  3059.  00h  8 BYTEs    F19/F14 font
  3060.  08h  8 BYTEs    F11/F8 font
  3061. ----------10CD03-----------------------------
  3062. INT 10 - VIDEO - UltraVision - GET PALETTE LOCKING STATUS (color EGA,VGA)
  3063.     AX = CD03h
  3064. Return: CL = palette locking value
  3065.         00h none
  3066.         01h text modes only
  3067.         FFh all modes
  3068. SeeAlso: AX=CD01h
  3069. ----------10CD04-----------------------------
  3070. INT 10 - VIDEO - UltraVision - GET UltraVision TEXT MODE (EGA,VGA)
  3071.     AX = CD04h
  3072. Return: AL = mode number
  3073.         11h 80x25
  3074.         12h 80x43, 80x50
  3075.         13h 80x34, 80x36
  3076.         14h 80x60, 80x63
  3077.         19h 94x25
  3078.         1Ah 94x43, 94x50
  3079.         1Bh 94x36
  3080.         1Ch 94x63
  3081.         21h 108x25
  3082.         22h 108x43, 108x50
  3083.         23h 107x34, 108x36
  3084.         24h 108x60, 108x63
  3085.         31h 120x25
  3086.         32h 120x43, 120x50
  3087.         33h 132x25
  3088.         34h 132x44, 132x50
  3089.         39h 120x36
  3090.         3Ah 120x63
  3091.         3Bh 132x36
  3092.         3Ch 132x60
  3093. SeeAlso: AH=0Fh,AX=CC00h,AH=CDh
  3094. ----------10CD05-----------------------------
  3095. INT 10 - VIDEO - UltraVision - SET CURSOR TYPE (EGA,VGA)
  3096.     AX = CD05h
  3097.     CL = type
  3098.         00h line cursor
  3099.         FFh box cursor
  3100. Note:    sets default cursor type for text-based programs
  3101. SeeAlso: AH=01h,AX=CD06h
  3102. ----------10CD06-----------------------------
  3103. INT 10 - VIDEO - UltraVision - GET CURSOR TYPE (EGA,VGA)
  3104.     AX = CD06h
  3105. Return:    CL = type
  3106.         00h line cursor
  3107.         FFh box cursor
  3108. SeeAlso: AH=03h,AX=CD05h
  3109. ----------10CD07-----------------------------
  3110. INT 10 - VIDEO - UltraVision v1.2+ - SET UNDERLINE STATUS (EGA,VGA)
  3111.     AX = CD07h
  3112.     CL = hardware underline status
  3113.         00h off (color systems only)
  3114.         01h underline below characters
  3115.         02h strike through characters
  3116.     BL = foreground color for normal text (FFh = current)
  3117.     BH = foreground color for bright text (FFh = current)
  3118. Return: CL = hardware underline status
  3119.     BL = current foreground color for normal text
  3120.     BH = current foreground color for bright text
  3121. Notes:    when underline or strikeout is enabled in color text modes, the
  3122.       specified colors will be assigned temporarily to colors 01h and 09h,
  3123.       allowing affected text to match non-underlined text.    The color
  3124.       remapping uses values from the current onscreen palette regardless
  3125.       of the palette locking status (see AX=CD01h)
  3126.     specify the standard colors (BL=01h,BH=09h) to enable underline or
  3127.       strikeout without color remapping
  3128. SeeAlso: AX=CD08h
  3129. ----------10CD08-----------------------------
  3130. INT 10 - VIDEO - UltraVision v1.2+ - GET UNDERLINE STATUS (EGA,VGA)
  3131.     AX = CD08h
  3132. Return: CL = hardware underline status (see AX=CD07h)
  3133.     BL = foreground color for normal text
  3134.     BH = foreground color for bright text
  3135. Note:    only CL is valid on monochrome EGA systems
  3136. SeeAlso: AX=CD07h
  3137. ----------10CD10-----------------------------
  3138. INT 10 - VIDEO - UltraVision - LOAD USER FONT (EGA,VGA)
  3139.     AX = CD10h
  3140.     BH = bytes per character (08h,0Ah,0Bh,0Eh,13h,14h)
  3141.     CX = ABCDh load 9xN alternate font (v2+)
  3142.        else number of characters to load
  3143.         DX = character offset into font table
  3144.         DS:SI -> 8-byte ASCII font name
  3145.     ES:BP -> font definitions
  3146. Return: AX = FFFFh if invalid font parameters
  3147. Notes:    loads the designated characters into UltraVision's resident font area
  3148.     should be followed by a video mode set to reload character generator
  3149. SeeAlso: AX=1100h
  3150. ----------10CD-------------------------------
  3151. INT 10 - VIDEO - UltraVision - SET ULTRAVISION TEXT MODE (EGA,VGA)
  3152.     AH = CDh
  3153.     AL = text mode number (see AX=CD04h)
  3154. Return: AX = CDCDh if invalid mode
  3155. SeeAlso: AX=CD04h
  3156. ----------10EF-------------------------------
  3157. INT 10 - VIDEO - MSHERC.COM - INSTALLATION CHECK???
  3158.     AH = EFh
  3159. Return: DL = video adapter type
  3160.         00h original Hercules
  3161.         01h ???  \ one is probably Hercules Plus, the other
  3162.         02h ???  / Hercules InColor
  3163.         FFh non-Hercules 
  3164.     DH = memory mode byte
  3165.         01h "half" mode
  3166.         03h "full" mode
  3167. Note:    MSHERC.COM is a support program for the Microsoft Quick languages which
  3168.       makes their graphics libraries compatible with a Hercules card by
  3169.       adding video modes 08h and 88h, and supporting text in the new
  3170.       graphics modes.  While in mode 08h or 88h, INT 10 supports the
  3171.       Hercules card much like a CGA.
  3172. ----------10F0-------------------------------
  3173. INT 10 - EGA Register Interface Library - READ ONE REGISTER
  3174.     AH = F0h
  3175.     BL = register number
  3176.     BH = 00h
  3177.     DX = group index
  3178.         Pointer/data chips
  3179.            00h CRT Controller (25 reg) 3B4h mono modes, 3D4h color modes
  3180.            08h Sequencer (5 registers) 3C4h
  3181.            10h Graphics Controller (9 registers) 3CEh
  3182.            18h Attribute Controller (20 registers) 3C0h
  3183.         Single registers
  3184.            20h Miscellaneous Output register 3C2h
  3185.            28h Feature Control register (3BAh mono modes, 3DAh color modes)
  3186.            30h Graphics 1 Position register 3CCh
  3187.            38h Graphics 2 Position register 3CAh
  3188. Return: BL = data
  3189. Note:    provided by the Microsoft Mouse driver, OS/2 compatibility box, and
  3190.       others
  3191. SeeAlso: AH=F1h,AH=F2h,INT 2F/AX=BC00h
  3192. ----------10F1-------------------------------
  3193. INT 10 - EGA Register Interface Library - WRITE ONE REGISTER
  3194.     AH = F1h
  3195.     DX = group index (see AH=F0h)
  3196.         if single register:
  3197.         BL = value to write
  3198.         otherwise
  3199.         BL = register number
  3200.         BH = value to write
  3201. Return: BL = data
  3202. Note:    provided by the Microsoft Mouse driver, OS/2 compatibility box, and
  3203.       others
  3204. SeeAlso: AX=7F05h,AH=F0h,AH=F3h
  3205. ----------10F2-------------------------------
  3206. INT 10 - EGA Register Interface Library - READ REGISTER RANGE
  3207.     AH = F2h
  3208.     CH = starting register number
  3209.     CL = Number of registers (>1)
  3210.     DX = group index
  3211.          00h CRTC (3B4h mono modes, 3D4h color modes)
  3212.          08h Sequencer 3C4h
  3213.          10h Graphics Controller 3CEh
  3214.          18h Attribute Controller 3C0h
  3215.     ES:BX -> buffer, CL bytes
  3216. Note:    provided by the Microsoft Mouse driver, OS/2 compatibility box, and
  3217.       others
  3218. SeeAlso: AH=F0h,AH=F3h
  3219. ----------10F3-------------------------------
  3220. INT 10 - EGA Register Interface Library - WRITE REGISTER RANGE
  3221.     AH = F3h
  3222.     CH = starting register
  3223.     CL = number of registers (>1)
  3224.     DX = group index (see AH=F2h)
  3225.     ES:BX -> buffer, CL bytes
  3226. Note:    provided by the Microsoft Mouse driver, OS/2 compatibility box, and
  3227.       others
  3228. SeeAlso: AX=7F05h,AH=F1h,AH=F2h
  3229. ----------10F4-------------------------------
  3230. INT 10 - EGA Register Interface Library - READ REGISTER SET
  3231.     AH = F4h
  3232.     CX = number of registers to read (>1)
  3233.     ES:BX -> table of records (see below)
  3234. Return: register values in table filled in
  3235. Note:    provided by the Microsoft Mouse driver, OS/2 compatibility box, and
  3236.       others
  3237. SeeAlso: AH=F0h,AH=F2h,AH=F5h
  3238.  
  3239. Format of entries in table of register records:
  3240. Offset    Size    Description
  3241.  00h    WORD    group index
  3242.         Pointer/data chips
  3243.            00h CRTC (3B4h mono modes, 3D4h color modes)
  3244.            08h Sequencer 3C4h
  3245.            10h Graphics Controller 3CEh
  3246.            18h Attribute Controller 3C0h
  3247.         Single registers
  3248.            20h Miscellaneous Output register 3C2h
  3249.            28h Feature Control register (3BAh mono modes, 3DAh color)
  3250.            30h Graphics 1 Position register 3CCh
  3251.            38h Graphics 2 Position register 3CAh
  3252.  02h    BYTE    register number (0 for single registers)
  3253.  03h    BYTE    register value
  3254. ----------10F5-------------------------------
  3255. INT 10 - EGA Register Interface Library - WRITE REGISTER SET
  3256.     AH = F5h
  3257.     CX = number of registers to write (>1)
  3258.     ES:BX -> table of records (see AH=F4h)
  3259. Note:    provided by the Microsoft Mouse driver, OS/2 compatibility box, and
  3260.       others
  3261. SeeAlso: AX=7F05h,AH=F1h,AH=F3h,AH=F4h
  3262. ----------10F6------------------------------
  3263. INT 10 - EGA Register Interface Library - REVERT TO DEFAULT REGISTERS
  3264.     AH = F6h
  3265. Note:    provided by the Microsoft Mouse driver, OS/2 compatibility box, and
  3266.       others
  3267. SeeAlso: AH=F7h
  3268. ----------10F7------------------------------
  3269. INT 10 - EGA Register Interface Library - DEFINE DEFAULT REGISTER TABLE
  3270.     AH = F7h
  3271.     DX = port number
  3272.        Pointer/data chips
  3273.           00h CRTC (3B4h mono modes, 3D4h color modes)
  3274.           08h Sequencer 3C4h
  3275.           10h Graphics Controller 3CEh
  3276.           18h Attribute Controller 3C0h
  3277.        Single registers
  3278.           20h Miscellaneous Output register 3C2h
  3279.           28h Feature Control register (3BAh mono modes, 3DAh color modes)
  3280.           30h Graphics 1 Position register 3CCh
  3281.           38h Graphics 2 Position register 3CAh
  3282.     ES:BX -> table of one-byte entries, one byte to be written to each
  3283.          register
  3284. Note:    provided by the Microsoft Mouse driver, OS/2 compatibility box, and
  3285.       others
  3286. SeeAlso: AH=F6h
  3287. ----------10FA--BX0000----------------------
  3288. INT 10 - EGA Register Interface Library - INTERROGATE DRIVER
  3289.     AH = FAh
  3290.     BX = 0000h
  3291. Return: BX = 0000h if mouse driver not present
  3292.     ES:BX -> EGA Register Interface version number, if present:
  3293.         byte 0 = major release number
  3294.         byte 1 = minor release number
  3295. Note:    provided by the Microsoft Mouse driver, OS/2 compatibility box, and
  3296.       others
  3297. SeeAlso: AH=F6h,INT 2F/AX=BC00h
  3298. ----------10FA------------------------------
  3299. INT 10 - FASTBUFF.COM - INSTALLATION CHECK
  3300.     AH = FAh
  3301. Return: AX = 00FAh if installed
  3302.         ES = segment of resident code
  3303. Note:    FASTBUFF.COM is a keyboard speedup/screen blanking utility by David
  3304.       Steiner
  3305. ----------10FE------------------------------
  3306. INT 10 - TopView - GET SHADOW BUFFER
  3307.     AH = FEh
  3308.     ES:DI -> assumed video buffer
  3309.         B800h:0000h color text/CGA graphics, B000h:0000h mono text,
  3310.           or A000h:0000h EGA/VGA graphics (RSIS environments only)
  3311. Return: ES:DI -> actual video buffer for calling process
  3312. Notes:    if no multitasker or RSIS-compliant environment is installed, ES:DI is
  3313.       returned unchanged; RSIS is the Relocated Screen Interface
  3314.       Specification
  3315.     for display pages other than 0, use AH=05h and AH=0Fh to determine
  3316.       whether a particular page exists
  3317.     TopView requires a call to AH=FFh to notify it that the screen has
  3318.       changed; DESQview will check for changes itself until the first call
  3319.       to AH=FFh
  3320. SeeAlso: AH=05h,AH=FFh,INT 15/AX=1024h,INT 21/AH=2Bh"DESQview"
  3321. ----------10FF-------------------------------
  3322. INT 10 - TopView - UPDATE SCREEN FROM SHADOW BUFFER
  3323.     AH = FFh
  3324.     CX = number of consecutive changed characters
  3325.     ES:DI -> first changed character in shadow buffer
  3326. Notes:    avoid CX=0000h
  3327.     DESQview will discontinue the automatic screen updating initiated by
  3328.       AH=FEh after this call
  3329. SeeAlso: AH=FEh
  3330. ----------10FF-------------------------------
  3331. INT 10 - DJ GO32.EXE 80386+ DOS extender - VIDEO EXTENSIONS
  3332.     AH = FFh
  3333.     AL = video mode
  3334.         00h 80x25 text
  3335.         01h default text
  3336.         02h CXxDX text
  3337.         03h biggest text
  3338.         04h 320x200 graphics
  3339.         05h default graphics
  3340.         06h CXxDX graphics
  3341.         07h    biggest non-interlaced graphics
  3342.         08h biggest graphics
  3343. SeeAlso: AH=00h,INT 21/AH=FFh"GO32"
  3344. ----------10FF00-----------------------------
  3345. INT 10 - CARBON COPY PLUS v5.0 - CHECK IF CC CONNECTED TO CCHELP
  3346.     AX = FF00h
  3347. Return: BL = 00h not connected
  3348.        = 01h connected
  3349. ----------10FF01-----------------------------
  3350. INT 10 - CARBON COPY PLUS v5.0 - DISCONNECT AND RESET LINE
  3351.     AX = FF01h
  3352. ----------10FF02-----------------------------
  3353. INT 10 - CARBON COPY PLUS v5.0 - GET LAST PHONE NUMBER DIALED
  3354.     AX = FF02h
  3355. Return: ES:DI -> ASCIZ phone number
  3356. ----------11---------------------------------
  3357. INT 11 - CPU-generated (80486+) - ALIGNMENT CHECK
  3358.    Bit AC in the EFLAGS register enables this interrupt on a memory reference
  3359.      on a mis-aligned address when in privilege mode 3.
  3360. ----------11---------------------------------
  3361. INT 11 - BIOS - GET EQUIPMENT LIST
  3362. Return: AX = BIOS equipment list word
  3363.         bits
  3364.         0      floppy disk(s) installed (see bits 6-7)
  3365.         1      80x87 coprocessor installed
  3366.         2,3      number of 16K banks of RAM on motherboard (PC only)
  3367.           number of 64K banks of RAM on motherboard (XT only)
  3368.         2      pointing device installed (PS)
  3369.         3      unused (PS)
  3370.         4-5      initial video mode
  3371.           00 EGA, VGA, or PGA
  3372.           01 40x25 color
  3373.           10 80x25 color
  3374.           11 80x25 monochrome
  3375.         6-7      number of floppies installed less 1 (if bit 0 set)
  3376.         8      DMA support installed (PCjr, some Tandy 1000s, 1400LT)
  3377.         9-11  number of serial ports installed
  3378.         12      game port installed
  3379.         13      serial printer attached (PCjr)
  3380.           internal modem installed (PC/Convertible)
  3381.         14-15 number of parallel ports installed
  3382. ---Compaq and many other 386/486 machines--
  3383.     EAX bit 23: page tables set so that Weitek coprocessor addressable in
  3384.             real mode
  3385.         bit 24: Weitek math coprocessor present
  3386. ---Compaq Systempro
  3387.     EAX bit 25: internal DMA parallel port available
  3388.         26: IRQ for internal DMA parallel port (if bit 25 set)
  3389.             0 = IRQ5
  3390.             1 = IRQ7
  3391.          27,28: parallel port DMA channel
  3392.             00 DMA channel 0
  3393.             01 DMA channel 0 ???
  3394.             10 reserved
  3395.             11 DMA channel 3
  3396. SeeAlso: INT 12
  3397. ----------11BC--DX1954-----------------------
  3398. INT 11 - BNU FOSSIL - INSTALLATION CHECK
  3399.     AH = BCh
  3400.     DX = 1954h
  3401. Return: AX = 1954h
  3402.     ES:DX -> entry point of driver (instead of INT 14)
  3403. ----------11FFFECXFFFE-----------------------
  3404. INT 11 - BACK&FORTH (before v1.62) API
  3405.     AX = FFFEh
  3406.     CX = FFFEh
  3407.     BX = function
  3408.         00h installation check
  3409.         Return: AX = 0001h BNFHIGH and BNFLOW both loaded
  3410.                = 0003h only BNFHIGH loaded
  3411.                else neither loaded
  3412.         01h ???
  3413.         Return: DX:AX -> ???
  3414.         02h ???
  3415.         03h ???
  3416.         04h ???
  3417.         05h ??? switches current PSP segment and stack if BNFLOW has not
  3418.             yet announced itself installed
  3419.         06h ???
  3420.         Return: AX = ???
  3421. SeeAlso: INT 12/AX=FFFEh
  3422. ----------12---------------------------------
  3423. INT 12 - BIOS - GET MEMORY SIZE
  3424. Return:    AX = kilobytes of contiguous memory starting at absolute address 00000h
  3425. Note:    this call returns the contents of the word at 0040h:0013h; in PC and
  3426.       XT, this value is set from the switches on the motherboard
  3427. SeeAlso: INT 11
  3428. ----------12----CX1806-----------------------
  3429. INT 12 - KEYBUI v2.0+ - INSTALLATION CHECK
  3430.     CX = 1806h
  3431. Return:    AX = kilobytes of contiguous memory starting at absolute address 00000h
  3432.     CX = 1960h if installed
  3433. Note:    KEYBUI is a resident keyboard driver by Johan Zwiekhorst which allows
  3434.       accented characters and box drawing on standard QWERTY keyboards; it
  3435.       also provides break-to-DOS and screen blanking capabilities
  3436. ----------12----CX1807-----------------------
  3437. INT 12 - PARKER v2.0+ - INSTALLATION CHECK
  3438.     CX = 1807h
  3439. Return:    AX = kilobytes of contiguous memory starting at absolute address 00000h
  3440.     CX = 1961h if installed
  3441. Note:    PARKER is an optionally-resident hard disk parking program by Johan
  3442.       Zwiekhorst
  3443. ----------12FFFECXFFFE-----------------------
  3444. INT 12 - Back&Forth v1.62+ - API
  3445.     AX = FFFEh
  3446.     CX = FFFEh
  3447.     BX = function
  3448.         00h installation check
  3449.         Return: AX = 0001h installed
  3450.                  else  not loaded
  3451.         02h build program ID list
  3452.         ES:DI -> buffer of at least 100 bytes, to be filled with words
  3453.         Return: AX = number of programs defined
  3454.             ES:DI buffer filled with AX words
  3455.         03h switch to specified task (task need not be open yet)
  3456.         DX = two-letter program ID
  3457.         Return: AX = 0000h if task undefined
  3458.         04h ???
  3459.         05h    ???
  3460.         06h    get version (undoc)
  3461.         Return: AX = version * 100 (v1.71 = 00ABh)
  3462.         07h ???
  3463.         08h get open tasks (undoc)
  3464.         ES:DI -> task info buffer (see below)
  3465.         Return: AX = number of open tasks (max 20)
  3466.         09h    ???
  3467. Note:    Back & Forth is a task switcher by Progressive Solutions, Inc.
  3468. SeeAlso: INT 11/AX=FFFEh
  3469.  
  3470. Format of task info buffer:
  3471. Offset    Size    Description
  3472.  00h 21 BYTEs    ASCIZ task name
  3473.  15h    BYTE    hotkey shift state (as for INT 16/AH=02h)
  3474.  16h    WORD    hotkey scan code
  3475.  18h    WORD    program ID
  3476. ----------1300-------------------------------
  3477. INT 13 - DISK - RESET DISK SYSTEM
  3478.     AH = 00h
  3479.     DL = drive (if bit 7 is set both hard disks and floppy disks reset)
  3480. Return: AH = status (see AH=01h)
  3481. Note:    forces controller to recalibrate drive heads (seek to track 0)
  3482. SeeAlso: AH=0Dh,AH=11h,INT 21/AH=0Dh,INT 4E"TI Professional"
  3483. ----------1301-------------------------------
  3484. INT 13 - DISK - GET STATUS OF LAST OPERATION
  3485.     AH = 01h
  3486.     DL = drive (bit 7 set for hard disk)
  3487. Return: AH = status of previous operation
  3488.         00h successful completion
  3489.         01h invalid function in AH or invalid parameter
  3490.         02h address mark not found
  3491.         03h disk write-protected (floppy)
  3492.         04h sector not found
  3493.         05h reset failed (hard disk)
  3494.         06h disk changed (floppy)
  3495.         07h drive parameter activity failed (hard disk)
  3496.         08h DMA overrun
  3497.         09h attempted DMA across 64K boundary
  3498.         0Ah bad sector detected (hard disk)
  3499.         0Bh bad track detected (hard disk)
  3500.         0Ch unsupported track or invalid media
  3501.         0Dh invalid number of sectors on format (hard disk)
  3502.         0Eh control data address mark detected (hard disk)
  3503.         0Fh DMA arbitration level out of range (hard disk)
  3504.         10h uncorrectable CRC or ECC error on read
  3505.         11h data ECC corrected (hard disk)
  3506.         20h controller failure
  3507.         40h seek failed
  3508.         80h timeout (not ready)
  3509.         AAh drive not ready (hard disk)
  3510.         BBh undefined error (hard disk)
  3511.         CCh write fault (hard disk)
  3512.         E0h status register error (hard disk)
  3513.         FFh sense operation failed (hard disk)
  3514. Note:    some BIOSes return the status in AL; the PS/2 Model 30/286 returns the
  3515.       status in both AH and AL
  3516. ----------1302-------------------------------
  3517. INT 13 - DISK - READ SECTOR(S) INTO MEMORY
  3518.     AH = 02h
  3519.     AL = number of sectors to read (must be nonzero)
  3520.     CH = low eight bits of cylinder number
  3521.     CL = sector number (bits 0-5)
  3522.          high two bits of cylinder (bits 6-7, hard disk only)
  3523.     DH = head number
  3524.     DL = drive number (bit 7 set for hard disk)
  3525.     ES:BX -> data buffer
  3526. Return: CF set on error
  3527.         if AH = 11h (corrected ECC error), AL = burst length
  3528.     CF clear if successful
  3529.     AH = status (see AH=01h)
  3530.     AL = number of sectors transferred
  3531. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  3532.       enough; the read should be retried at least three times, resetting
  3533.       the disk with AH=00h between attempts
  3534.     AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  3535.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  3536. SeeAlso: AH=03h,AH=0Ah
  3537. ----------1303-------------------------------
  3538. INT 13 - DISK - WRITE DISK SECTOR(S)
  3539.     AH = 03h
  3540.     AL = number of sectors to write (must be nonzero)
  3541.     CH = low eight bits of cylinder number
  3542.     CL = sector number (bits 0-5)
  3543.          high two bits of cylinder (bits 6-7, hard disk only)
  3544.     DH = head number
  3545.     DL = drive number (bit 7 set for hard disk)
  3546.     ES:BX -> data buffer
  3547. Return: CF set on error
  3548.     CF clear if successful
  3549.     AH = status (see AH=01h)
  3550.     AL = number of sectors transferred
  3551. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  3552.       enough; the write should be retried at least three times, resetting
  3553.       the disk with AH=00h between attempts
  3554.     AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  3555.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  3556. SeeAlso: AH=02h,AH=0Bh
  3557. ----------1304-------------------------------
  3558. INT 13 - DISK - VERIFY DISK SECTOR(S)
  3559.     AH = 04h
  3560.     AL = number of sectors to verify (must be nonzero)
  3561.     CH = low eight bits of cylinder number
  3562.     CL = sector number (bits 0-5)
  3563.          high two bits of cylinder (bits 6-7, hard disk only)
  3564.     DH = head number
  3565.     DL = drive number (bit 7 set for hard disk)
  3566.     ES:BX -> data buffer (PC,XT,AT with BIOS prior to 11/15/85)
  3567. Return: CF set on error
  3568.     CF clear if successful
  3569.     AH = status (see AH=01h)
  3570.     AL = number of sectors verified
  3571. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  3572.       enough; the write should be retried at least three times, resetting
  3573.       the disk with AH=00h between attempts
  3574.     this function does not compare the disk with memory, it merely
  3575.       checks whether the sector's stored CRC matches the data's actual CRC
  3576.     AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  3577.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  3578. SeeAlso: AH=02h
  3579. ----------1305-------------------------------
  3580. INT 13 - FLOPPY - FORMAT TRACK
  3581.     AH = 05h
  3582.     AL = number of sectors to format
  3583.     CH = track number
  3584.     DH = head number
  3585.     DL = drive number
  3586.     ES:BX -> address field buffer (see below)
  3587. Return: CF set on error
  3588.     CF clear if successful
  3589.     AH = status (see AH=01h)
  3590. Notes:    on AT or higher, call AH=17h first
  3591.     the number of sectors per track is read from the diskette parameter
  3592.       table pointed at by INT 1E
  3593. SeeAlso: AH=05h"FIXED",AH=17h,AH=18h,INT 1E
  3594.  
  3595. Format of address field buffer entry (one per sector in track):
  3596. Offset    Size    Description
  3597.  00h    BYTE    track number
  3598.  01h    BYTE    head number (0-based)
  3599.  02h    BYTE    sector number
  3600.  03h    BYTE    sector size (00h=128 bytes, 01h=256 bytes, 02h=512, 03h=1024)
  3601. ----------1305-------------------------------
  3602. INT 13 - FIXED DISK - FORMAT TRACK
  3603.     AH = 05h
  3604.     AL = interleave value (XT-type controllers only)
  3605.     ES:BX = 512-byte format buffer
  3606.         the first 2*(sectors/track) bytes contain F,N for each sector
  3607.            F = 00h for good sector, 80h for bad sector
  3608.            N = sector number
  3609.     CH = cylinder number (bits 8,9 in high bits of CL)
  3610.     CL = high bits of cylinder number (bits 7,6)
  3611.     DH = head
  3612.     DL = drive
  3613. Return: AH = status code (see AH=01h)
  3614. Notes:    AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  3615.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  3616.     for XT-type controllers on an AT or higher, AH=0Fh should be called
  3617.       first
  3618. SeeAlso: AH=05h"FLOPPY",AH=06h,AH=07h,AH=0Fh,AH=18h,AH=1Ah
  3619. ----------1306-------------------------------
  3620. INT 13 - FIXED DISK - FORMAT TRACK AND SET BAD SECTOR FLAGS (XT,PORT)
  3621.     AH = 06h
  3622.     AL = interleave value
  3623.     CH = cylinder number (bits 8,9 in high bits of CL)
  3624.     CL = sector number
  3625.     DH = head
  3626.     DL = drive
  3627. Return: AH = status code (see AH=01h)
  3628. Note:    AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  3629.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  3630. ----------1307-------------------------------
  3631. INT 13 - FIXED DISK - FORMAT DRIVE STARTING AT GIVEN TRACK (XT,PORT)
  3632.     AH = 07h
  3633.     AL = interleave value (XT only)
  3634.     ES:BX = 512-byte format buffer (see AH=05h)
  3635.     CH = cylinder number (bits 8,9 in high bits of CL)
  3636.     CL = sector number
  3637.     DH = head
  3638.     DL = drive
  3639. Return: AH = status code (see AH=01h)
  3640. Note:    AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  3641.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  3642. SeeAlso: AH=1Ah
  3643. ----------1308-------------------------------
  3644. INT 13 - DISK - GET DRIVE PARAMETERS (PC,XT286,CONV,PS,ESDI,SCSI)
  3645.     AH = 08h
  3646.     DL = drive (bit 7 set for hard disk)
  3647. Return: CF set on error
  3648.         AH = status (07h) (see AH=01h)
  3649.     CF clear if successful
  3650.         AH = 00h
  3651.         BL = drive type (AT/PS2 floppies only)
  3652.             01h 360K
  3653.         02h 1.2M
  3654.         03h 720K
  3655.         04h 1.44M
  3656.         CH = low eight bits of maximum cylinder number
  3657.         CL = maximum sector number (bits 5-0)
  3658.          high two bits of maximum cylinder number (bits 7-6)
  3659.         DH = maximum head number
  3660.         DL = number of drives
  3661.         ES:DI -> drive parameter table (floppies only)
  3662. Notes:    may return successful even though specified drive is greater than the
  3663.       number of attached drives of that type (floppy/hard); check DL to
  3664.       ensure validity
  3665.     for systems predating the IBM AT, this call is only valid for hard
  3666.       disks, as it is implemented by the hard disk BIOS rather than the
  3667.       ROM BIOS
  3668.     Toshiba laptops with HardRAM return DL=02h when called with DL=80h,
  3669.       but fail on DL=81h.  The BIOS data at 40h:75h correctly reports 01h.
  3670. SeeAlso: AH=15h,INT 1E,INT 41
  3671. ----------1309-------------------------------
  3672. INT 13 - HARD DISK - INITIALIZE CONTROLLER WITH DRIVE PARAMETERS (AT,PS)
  3673.     AH = 09h
  3674.     DL = drive (80h for first, 81h for second)
  3675. Return: CF clear if successful
  3676.     CF set on error
  3677.     AH = status (see AH=01h)
  3678. Notes:    on the PC and XT, this function uses the parameter table pointed at by
  3679.       INT 41
  3680.     on the AT and later, this function uses the parameter table pointed at
  3681.       by INT 41 if DL=80h, and the parameter table pointed at by INT 46 if
  3682.       DL=81h
  3683. SeeAlso: INT 41,INT 46
  3684. ----------130A-------------------------------
  3685. INT 13 - HARD DISK - READ LONG SECTOR(S) (AT and later)
  3686.     AH = 0Ah
  3687.     AL = number of sectors
  3688.     CH = low eight bits of cylinder number
  3689.     CL = sector number (bits 5-0)
  3690.          high two bits of cylinder number (bits 7-6)
  3691.     DH = head number
  3692.     DL = drive number (80h = first, 81h = second)
  3693.     ES:BX -> data buffer
  3694. Return: CF clear if successful
  3695.     CF set on error
  3696.     AH = status (see AH=01h)
  3697.     AL = number of sectors transferred
  3698. Notes:    this function reads in four to seven bytes of error-correcting code
  3699.       along with each sector's worth of information
  3700.     data errors are not automatically corrected, and the read is aborted
  3701.       after the first sector with an ECC error
  3702.     used for diagnostics only on PS/2 systems
  3703. SeeAlso: AH=02h,AH=0Bh
  3704. ----------130B-------------------------------
  3705. INT 13 - HARD DISK - WRITE LONG SECTOR(S) (AT and later)
  3706.     AH = 0Bh
  3707.     AL = number of sectors
  3708.     CH = low eight bits of cylinder number
  3709.     CL = sector number (bits 5-0)
  3710.          high two bits of cylinder number (bits 7-6)
  3711.     DH = head number
  3712.     DL = drive number (80h = first, 81h = second)
  3713.     ES:BX -> data buffer
  3714. Return: CF clear if successful
  3715.     CF set on error
  3716.     AH = status (see AH=01h)
  3717.     AL = number of sectors transferred
  3718. Notes:    each sector's worth of data must be followed by four to seven bytes of
  3719.       error-correction information
  3720.     used for diagnostics only on PS/2 systems
  3721. SeeAlso: AH=03h,AH=0Ah
  3722. ----------130C-------------------------------
  3723. INT 13 - HARD DISK - SEEK TO CYLINDER
  3724.     AH = 0Ch
  3725.     CH = low eight bits of cylinder number
  3726.     CL = sector number (bits 5-0)
  3727.          high two bits of cylinder number (bits 7-6)
  3728.     DH = head number
  3729.     DL = drive number (80h = first, 81h = second hard disk)
  3730. Return: CF set on error
  3731.     CF clear if successful
  3732.     AH = status (see AH=01h)
  3733. SeeAlso: AH=00h,AH=02h,AH=0Ah
  3734. ----------130D-------------------------------
  3735. INT 13 - HARD DISK - RESET HARD DISKS
  3736.     AH = 0Dh
  3737.     DL = drive number (80h = first, 81h = second hard disk)
  3738. Return: CF set on error
  3739.     CF clear if successful
  3740.     AH = status (see AH=01h)
  3741. Notes:    reinitializes the hard disk controller, resets the specified drive's
  3742.       parameters, and recalibrates the drive's heads (seek to track 0)
  3743.     not for PS/2 ESDI drives
  3744. SeeAlso: AH=00h,INT 21/AH=0Dh
  3745. ----------130E-------------------------------
  3746. INT 13 - HARD DISK - READ SECTOR BUFFER (XT only)
  3747.     AH = 0Eh
  3748.     DL = drive number (80h = first, 81h = second hard disk)
  3749.     ES:BX -> buffer
  3750. Return: CF set on error
  3751.     CF clear if successful
  3752.     AH = status code (see AH=01h)
  3753. Notes:    transfers controller's sector buffer.  No data is read from the drive
  3754.     used for diagnostics only on PS/2 systems
  3755. SeeAlso: AH=0Ah
  3756. ----------130F-------------------------------
  3757. INT 13 - HARD DISK - WRITE SECTOR BUFFER (XT only)
  3758.     AH = 0Fh
  3759.     DL = drive number (80h = first, 81h = second hard disk)
  3760.     ES:BX -> buffer
  3761. Return: CF set on error
  3762.     CF clear if successful
  3763.     AH = status code (see AH=01h)
  3764. Notes:    does not write data to the drive
  3765.     should be called before formatting to initialize an XT-type
  3766.       controller's sector buffer
  3767.     used for diagnostics only on PS/2 systems
  3768. SeeAlso: AH=0Bh
  3769. ----------1310-------------------------------
  3770. INT 13 - HARD DISK - CHECK IF DRIVE READY
  3771.     AH = 10h
  3772.     DL = drive number (80h = first, 81h = second hard disk)
  3773. Return: CF set on error
  3774.     CF clear if successful
  3775.     AH = status (see AH=01h)
  3776. ----------1311-------------------------------
  3777. INT 13 - HARD DISK - RECALIBRATE DRIVE
  3778.     AH = 11h
  3779.     DL = drive number (80h = first, 81h = second hard disk)
  3780. Return:    CF set on error
  3781.     CF clear if successful
  3782.     AH = status (see AH=01h)
  3783. Note:    causes hard disk controller to seek the specified drive to cylinder 0
  3784. SeeAlso: AH=00h,AH=0Ch,AH=19h"FIXED DISK"
  3785. ----------1312-------------------------------
  3786. INT 13 - HARD DISK - CONTROLLER RAM DIAGNOSTIC (XT,PS)
  3787.     AH = 12h
  3788.     DL = drive number (80h = first, 81h = second hard disk)
  3789. Return: CF set on error
  3790.     CF clear if successful
  3791.     AH = status code (see AH=01h)
  3792. SeeAlso: AH=13h,AH=14h
  3793. ----------1312-------------------------------
  3794. INT 13 - Future Domain SCSI CONTROLLER - STOP SCSI DISK
  3795.     AH = 12h
  3796.     DL = hard drive ID
  3797. Return: CF set on error
  3798.     AH = status code (see AH=01h)
  3799. Notes:    available at least on the TMC-870 8-bit SCSI controller BIOS v6.0A
  3800.     if the given drive is a SCSI device, the SCSI Stop Unit command is sent
  3801.       and either "Disk prepared for shipping" or "Disk Stop command failed"
  3802.       is displayed
  3803. ----------1313-------------------------------
  3804. INT 13 - HARD DISK - DRIVE DIAGNOSTIC (XT,PS)
  3805.     AH = 13h
  3806.     DL = drive number (80h = first, 81h = second hard disk)
  3807. Return: CF set on error
  3808.     CF clear if successful
  3809.     AH = status code (see AH=01h)
  3810. SeeAlso: AH=12h,AH=14h
  3811. ----------1314-------------------------------
  3812. INT 13 - HARD DISK - CONTROLLER INTERNAL DIAGNOSTIC
  3813.     AH = 14h
  3814. Return: CF set on error
  3815.     CF clear if successful
  3816.     AH = status code (see AH=01h)
  3817. SeeAlso: AH=12h,AH=13h
  3818. ----------1315-------------------------------
  3819. INT 13 - DISK - GET DISK TYPE (XT 1/10/86 or later,XT286,AT,PS)
  3820.     AH = 15h
  3821.     DL = drive number (bit 7 set for hard disk)
  3822. Return:    CF clear if successful
  3823.         AH = type code
  3824.         00h no such drive
  3825.         01h floppy without change-line support
  3826.         02h floppy with change-line support
  3827.         03h hard disk
  3828.             CX:DX = number of 512-byte sectors
  3829.     CF set on error
  3830.         AH = status (see AH=01h)
  3831. SeeAlso: AH=08h,AH=16h,AH=17h,AH=19h"SCSI"
  3832. ----------1316-------------------------------
  3833. INT 13 - FLOPPY DISK - DETECT DISK CHANGE (XT 1/10/86 or later,XT286,AT,PS)
  3834.     AH = 16h
  3835.     DL = drive number
  3836. Return: CF clear if change line inactive
  3837.         AH = 00h (disk not changed)
  3838.     CF set if change line active
  3839.         AH = 06h change line active or not supported
  3840.            = 80h drive not ready or not present
  3841. Note:    call AH=15h first to determine whether the drive supports a change
  3842.       line
  3843. SeeAlso: AH=15h
  3844. ----------1317-------------------------------
  3845. INT 13 - FLOPPY DISK - SET DISK TYPE FOR FORMAT (AT,PS)
  3846.     AH = 17h
  3847.     AL = format type
  3848.         01h = 320/360K disk in 360K drive
  3849.         02h = 320/360K disk in 1.2M drive
  3850.         03h = 1.2M disk in 1.2M drive
  3851.         04h = 720K disk in 720K drive
  3852.     DL = drive number
  3853. Return: CF set on error
  3854.     CF clear if successful
  3855.     AH = status (see AH=01h)
  3856. Note:    this function does not handle 1.44M drives; use AH=18h instead
  3857. SeeAlso: AH=15h,AH=18h
  3858. ----------1318-------------------------------
  3859. INT 13 - DISK - SET MEDIA TYPE FOR FORMAT (AT model 3x9,XT2,XT286,PS)
  3860.     AH = 18h
  3861.     DL = drive number
  3862.     CH = lower 8 bits of number of tracks
  3863.     CL = sectors per track (bits 0-5)
  3864.          top 2 bits of number of tracks (bits 6,7)
  3865. Return: AH = status
  3866.         00h requested combination supported
  3867.         01h function not available
  3868.         0Ch not supported or drive type unknown
  3869.         80h there is no disk in the drive
  3870.     ES:DI -> 11-byte parameter table
  3871. SeeAlso: AH=05h,AH=07h,AH=17h
  3872. ----------1318-------------------------------
  3873. INT 13 - Future Domain SCSI BIOS - GET SCSI CONTROLLER INFORMATION
  3874.     AH = 18h
  3875.     DL = hard drive ID
  3876. Return: CF set on error
  3877.         AH = status code (see AH=01h)
  3878.     CF clear if successful
  3879.         AX = 4321h (magic number???)
  3880.         BH = number of SCSI drives connected
  3881.         BL = SCSI device number for specified drive
  3882.         CX = 040Ah (magic number???)
  3883. Note:    also sets an internal flag (non-resettable) which prevents some
  3884.       controller messages from being displayed and allows writes to
  3885.       removable devices
  3886. SeeAlso: AH=1Bh"SCSI"
  3887. ----------1319-------------------------------
  3888. INT 13 - FIXED DISK - PARK HEADS (XT286,PS)
  3889.     AH = 19h
  3890.     DL = drive
  3891. Return: CF set on error
  3892.     AH = status (see AH=01h)
  3893. SeeAlso: AH=11h
  3894. ----------1319-------------------------------
  3895. INT 13 - Future Domain SCSI CONTROLLER - REINITIALIZE DRIVE
  3896.     AH = 19h
  3897.     DL = hard drive ID
  3898. Return: CF set on error
  3899.         AH = status code (see AH=01h)
  3900.     CF clear if successful
  3901.         AH = disk type (03h = fixed disk)
  3902.         CX:DX = number of 512-byte sectors
  3903. Notes:    sends SCSI Read Capacity command to get number of logical blocks and
  3904.       adjusts the result for 512-byte sectors
  3905.     displays either "Error in Read Capacity Command" or "nnn Bytes per
  3906.       sector" (nnn=256 or 512, the only sizes supported in the translation
  3907.       code)
  3908.     should probably be called when a removable device has its media changed
  3909.     returns the same values as AH=15h
  3910. SeeAlso: AH=15h,AH=1Ah
  3911. ----------131A-------------------------------
  3912. INT 13 - ESDI FIXED DISK - FORMAT UNIT (PS)
  3913.     AH = 1Ah
  3914.     AL = defect table count
  3915.     CL = format modifiers
  3916.         bit 4: generate periodic interrupt
  3917.         bit 3: perform surface analysis
  3918.         bit 2: update secondary defect map
  3919.         bit 1: ignore secondary defect map
  3920.         bit 0: ignore primary defect map
  3921.     DL = drive
  3922.     ES:BX -> defect table
  3923. Return: CF set on error
  3924.     AH = status (see AH=01h)
  3925. Note:    if periodic interrupt selected, INT 15h/AH=0Fh is called after each
  3926.       cylinder is formatted
  3927. SeeAlso: AH=07h,INT 15/AH=0Fh
  3928. ----------131A-------------------------------
  3929. INT 13 - Future Domain SCSI CONTROLLER - GET SCSI PARTIAL MEDIUM CAPACITY
  3930.     AH = 1Ah
  3931.     CH = track (bits 8,9 in high bits of CL)
  3932.     CL = sector (01h to number of sectors/track for drive)
  3933.     DH = head
  3934.     DL = hard drive ID
  3935. Return: CF set on error
  3936.     AH = status code (see AH=01h)
  3937.     CX:DX = logical block number of last quickly-accessible block after
  3938.         given block
  3939. Note:    sends SCSI Read Capacity command with the PMI bit set to obtain the
  3940.       logical block address of the last block after which a substantial
  3941.       delay in data transfer will be encountered (usually the last block
  3942.       on the current cylinder).  No translation to 512 byte sectors is
  3943.       performed on the result if data is stored on the disk in other than
  3944.       512 byte sectors.
  3945. SeeAlso: AH=15h,AH=19h"SCSI"
  3946. ----------131B-------------------------------
  3947. INT 13 - ESDI FIXED DISK - GET MANUFACTURING HEADER
  3948.     AH = 1Bh
  3949.     AL = number of record
  3950.     DL = drive
  3951.     ES:BX -> buffer for manufacturing header (defect list)
  3952. Return: CF set on error
  3953.         AH = status
  3954. Note:    manufacturing header format (Defect Map Record format) can be found
  3955.       in IBM 70MB, 115MB Fixed Disk Drives Technical Reference
  3956. ----------131B-------------------------------
  3957. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO SCSI DISK INFO BLOCK
  3958.     AH = 1Bh
  3959.     DL = hard drive ID
  3960. Return: CF set on error
  3961.         AH = status code (see AH=01h)
  3962.     CF clear if successful
  3963.         ES:BX -> SCSI disk information block
  3964. Note:    also sets a non-resettable flag which prevents some controller messages
  3965.       from being displayed
  3966. SeeAlso: AH=18h"SCSI",AH=1Ch"SCSI"
  3967.  
  3968. Format of SCSI disk information block:
  3969. Offset    Size    Description
  3970.  00h    BYTE    drive physical information
  3971.         bit 0: ???
  3972.         bit 1: device uses parity
  3973.         bit 2: 256 bytes per sector instead of 512
  3974.         bit 3: don't have capacity yet???
  3975.         bit 4: disk is removable
  3976.         bit 5: logical unit number is not present
  3977.  01h    WORD    translated number of cylinders
  3978.  03h    BYTE    translated number of heads
  3979.  04h    BYTE    translated number of sectors per track (17, 34, or 63)
  3980.  05h    BYTE    drive address
  3981.         bits 0-2: logical unit number
  3982.         bits 3-5: device number
  3983.  06h    BYTE    01h at initialization
  3984.  07h    BYTE    sense code byte 00h, or extended sense code byte 0Ch
  3985.  08h    BYTE    00h
  3986.  09h    BYTE    00h or extended sense code byte 02h (sense key)
  3987.  0Ah    BYTE    00h
  3988.  0Bh 10 BYTEs    copy of Command Descriptor Block (CDB)
  3989.  15h    DWORD    translated number of sectors on device
  3990. ----------131C-------------------------------
  3991. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO FREE CONTROLLER RAM
  3992.     AH = 1Ch
  3993.     DL = hard drive ID (any valid SCSI hard disk)
  3994. Return: CF set on error
  3995.         AH = status code (see AH=01h)
  3996.     CF clear if successful
  3997.         ES:BX -> first byte of free RAM on controller
  3998. Notes:    the Future Domain TMC-870 contains 1024 bytes of RAM at offsets 1800h
  3999.       to 1BFFh on-bard the controller for storing drive information and
  4000.       controller status; ES:BX points to the first byte available for other
  4001.       uses
  4002.     ES contains the segment at which the controller resides; the
  4003.       controller's two memory-mapped I/O ports are at offsets 1C00h, 1E00h
  4004. SeeAlso: AH=1Bh"SCSI"
  4005. ----------131C0A-----------------------------
  4006. INT 13 - ESDI FIXED DISK - GET DEVICE CONFIGURATION
  4007.     AX = 1C0Ah
  4008.     DL = drive
  4009.     ES:BX -> buffer for device configuration (drive physical parameter)
  4010. Return: CF set on error
  4011.         AH = status
  4012. Note:    device configuration format can be found in IBM ESDI Fixed Disk Drive
  4013.       Adapter/A Technical Reference
  4014. ----------131C0B-----------------------------
  4015. INT 13 - ESDI FIXED DISK - GET ADAPTER CONFIGURATION
  4016.     AX = 1C0Bh
  4017.     ES:BX -> buffer for adapter configuration
  4018. Return: CF set on error
  4019.         AH = status
  4020. SeeAlso: AX=1C0Ch
  4021. ----------131C0C-----------------------------
  4022. INT 13 - ESDI FIXED DISK - GET POS INFORMATION
  4023.     AX = 1C0Ch
  4024.     ES:BX -> POS information
  4025. Return: CF set on error
  4026.         AH = status
  4027. SeeAlso: AX=1C0Bh
  4028. ----------131C0E-----------------------------
  4029. INT 13 - ESDI FIXED DISK - TRANSLATE RBA TO ABA
  4030.     AX = 1C0Eh
  4031.     CH = low 8 bits of cylinder number
  4032.     CL = sector number, high two bits of cylinder number in bits 6 and 7
  4033.     DH = head number
  4034.     DL = drive number
  4035.     ES:BX -> ABA number
  4036. Return: CF set on error
  4037.         AH = status
  4038. Note:    ABA (absolute block address) format can be found in IBM ESDI Adapter
  4039.       Technical Reference by using its Device Configuration Status Block
  4040. ----------131D-------------------------------
  4041. INT 13 - IBMCACHE.SYS - CACHE STATUS
  4042.     AH = 1Dh
  4043.     AL = subfunction
  4044.         01h get status record
  4045.         DL = drive???
  4046.         Return: ES:BX -> status record
  4047.             CF set on error
  4048.                 AH = error code
  4049.         02h set cache status
  4050.         ES:BX -> status record
  4051.         DL = drive???
  4052.         Return: CF set on error
  4053.  
  4054. Format of status record:
  4055. Offset    Size    Description
  4056.  00h    DWORD    total number of read requests
  4057.  04h    DWORD    total number of hits
  4058.  08h    DWORD    number of physical disk reads
  4059.  0Ch    DWORD    total number of sectors requested by physical disk reads
  4060.  10h  6 bytes    ???
  4061.  16h    DWORD    pointer to start of error list
  4062.  1Ah    DWORD    pointer to end of error list
  4063.  1Eh    WORD    ???
  4064.  20h    BYTE    using extended memory if nonzero
  4065.  21h    BYTE    ???
  4066.  22h  4 BYTEs    ASCII version number
  4067.  26h    WORD    cache size in K
  4068.  28h    WORD    sectors per page
  4069.  
  4070. Format of error list:
  4071. Offset    Size    Description
  4072.  00h    DWORD    relative block address of bad page
  4073.  04h    BYTE    drive
  4074.  05h    BYTE    sector bit-map
  4075.  06h    WORD    next error
  4076. ----------1320-------------------------------
  4077. INT 13 - DISK - ??? (Western Digital "Super BIOS")
  4078.     AH = 20h
  4079.     ???
  4080. Return: ???
  4081. Note:    seems to return some kind of status
  4082. ----------1320FF-----------------------------
  4083. INT 13 - QCACHE - DISMOUNT
  4084.     AX = 20FFh
  4085. Return: ???
  4086. ----------1321-------------------------------
  4087. INT 13 - QCACHE - FLUSH CACHE
  4088.     AH = 21h
  4089. Return: ???
  4090. SeeAlso: AH=25h,AH=2Eh
  4091. ----------1322-------------------------------
  4092. INT 13 - QCACHE - ENABLE/DISABLE CACHE
  4093.     AH = 22h
  4094.     AL = 00h disable cache
  4095.          01h enable cache
  4096. ----------1324-------------------------------
  4097. INT 13 - QCACHE - SET SECTORS
  4098.     AH = 24h
  4099.     BX = number of sectors
  4100. Return: ???
  4101. ----------1325-------------------------------
  4102. INT 13 - QCACHE - SET FLUSH INTERVAL
  4103.     AH = 25h
  4104.     BC = interval
  4105. Return: ???
  4106. SeeAlso: AH=21h,AH=2Eh
  4107. ----------1327--BX0000-----------------------
  4108. INT 13 - QCACHE - INSTALLATION CHECK
  4109.     AH = 27h
  4110.     BX = 0000h
  4111. Return: BX nonzero if installed
  4112. ----------132A-------------------------------
  4113. INT 13 - QCACHE - SET BUFFER SIZE
  4114.     AH = 2Ah
  4115.     AL = buffer size
  4116. Return: ???
  4117. ----------132C-------------------------------
  4118. INT 13 - QCACHE - SET BUFFERED WRITES
  4119.     AH = 2Ch
  4120.     AL = state
  4121.         00h disable
  4122.         01h enable
  4123. Return: ???
  4124. SeeAlso: AH=2Dh
  4125. ----------132D-------------------------------
  4126. INT 13 - QCACHE - SET BUFFERED READ
  4127.     AH = 2Dh
  4128.     AL = state
  4129.         00h disable
  4130.         01h enable
  4131. Return: ???
  4132. SeeAlso: AH=2Ch
  4133. ----------132E-------------------------------
  4134. INT 13 - QCACHE - SET FLUSH COUNT
  4135.     AH = 2Eh
  4136.     BX = flush count
  4137. Return: ???
  4138. SeeAlso: AH=21h,AH=25h
  4139. ----------1330-------------------------------
  4140. INT 13 - QCACHE - GET INFO
  4141.     AH = 30h
  4142.     AL = what to get
  4143.         00h system info
  4144.         01h drive info
  4145.     DS:DX -> buffer for info
  4146. Return: ???
  4147. ----------1370-------------------------------
  4148. INT 13 - Priam EDVR.SYS DISK PARTITIONING SOFTWARE???
  4149.     AH = 70h
  4150.     ???
  4151. Return: ???
  4152. Note:    Priam's EDISK.EXE (FDISK replacement) and EFMT.EXE (low-level
  4153.       formatting program) make this call, presumably to EDVR.SYS (the
  4154.       partitioning driver)
  4155. SeeAlso: AH=ADh
  4156. ----------1375-------------------------------
  4157. INT 13 - ???
  4158.     AH = 75h
  4159.     ???
  4160. Return: AH = ???
  4161.     ???
  4162. Note:    intercepted by PC-Cache (v5.1 only)
  4163. ----------1376-------------------------------
  4164. INT 13 - ???
  4165.     AH = 76h
  4166.     ???
  4167. Return: AH = ???
  4168.     ???
  4169. Note:    intercepted by PC-Cache (v5.1 only)
  4170. ----------1380--CX6572-----------------------
  4171. INT 13 - FAST! - API
  4172.     AH = 80h
  4173.     CX = 6572h
  4174.     DX = 1970h
  4175.     ES:BX -> data structure (see below)
  4176.     AL = function
  4177.         01h ???
  4178.         04h ???
  4179.         05h ???
  4180.         06h installation check
  4181.         Return: AX = 1965h if installed
  4182.         07h ???
  4183.         09h ???
  4184.         0Ah ???
  4185.         0Bh ???
  4186.         0Ch set ??? flag
  4187.         0Dh clear ??? flag
  4188. Return: AH = 00h if successful (except function 06h)
  4189.  
  4190. Format of data structure:
  4191. Offset    Size    Description
  4192.  00h    DWORD    pointer to 19-byte signature string 
  4193.         13h 07h 06h 08h 11h 18h 0Fh 0Eh 02h 18h 13h 08h 0Bh 08h 01h 00h
  4194.           04h 08h 15h  (v4.04)
  4195.  04h    ???    ???
  4196. ----------1381--SI4358-----------------------
  4197. INT 13 - Super PC Kwik/PC-Cache 5.x - ???
  4198.     AH = 81h
  4199.     SI = 4358h
  4200.     ???
  4201. Return: ???
  4202. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC Kwik, and thus
  4203.       supports this call
  4204.     returns immediately in PC-Cache v5.x
  4205. ----------1382--SI4358-----------------------
  4206. INT 13 - Super PC Kwik/PC-Cache 5.x - ???
  4207.     AH = 82h
  4208.     SI = 4358h
  4209.     ???
  4210. Return: AL = ???
  4211. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC Kwik, and thus
  4212.       supports this call
  4213. SeeAlso: AH=84h
  4214. ----------1383--SI4358-----------------------
  4215. INT 13 - Super PC Kwik/PC-Cache 5.x - ???
  4216.     AH = 83h
  4217.     SI = 4358h
  4218.     AL = ???
  4219.     ES:BX -> ???
  4220.     ???
  4221. Return: ???
  4222. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC Kwik, and thus
  4223.       supports this call
  4224. SeeAlso: AH=85h
  4225. ----------1384--SI4358-----------------------
  4226. INT 13 - Super PC Kwik/PC-Cache 5.x - ???
  4227.     AH = 84h
  4228.     SI = 4358h
  4229.     AL = ???
  4230.     ???
  4231. Return: AL = ???
  4232. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC Kwik, and thus
  4233.       supports this call
  4234. SeeAlso: AH=82h
  4235. ----------1385--SI4358-----------------------
  4236. INT 13 - Super PC Kwik/PC-Cache 5.x - ???
  4237.     AH = 85h
  4238.     SI = 4358h
  4239.     AL = ???
  4240.     DL = ???
  4241.     ???
  4242. Return: ???
  4243. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC Kwik, and thus
  4244.       supports this call
  4245. SeeAlso: AH=83h
  4246. ----------138EED-----------------------------
  4247. INT 13 - HyperDisk v4.01+ - ???
  4248.     AX = 8EEDh
  4249.     ???
  4250. Return: ???
  4251. Note:    HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  4252. SeeAlso: AX=8EEEh,AX=8EEFh,AH=EEh,INT 2F/AH=DFh
  4253. ----------138EEE-----------------------------
  4254. INT 13 - HyperDisk v4.01+ - ???
  4255.     AX = 8EEEh
  4256. Return: CF set
  4257.     AX = CS of HyperDisk resident code
  4258.     ???
  4259. Note:    identical to AX=8EEFh in HYPERDKX v4.21-4.30
  4260. SeeAlso: AX=8EEDh,AX=8EEFh,AH=EEh
  4261. ----------138EEF-----------------------------
  4262. INT 13 - HyperDisk v4.01+ - ???
  4263.     AX = 8EEFh
  4264. Return: CF set
  4265.     AX = CS of HyperDisk resident code
  4266.     ???
  4267. Note:    identical to AX=8EEEh in HYPERDKX v4.21-4.30
  4268. SeeAlso: AX=8EEDh,AX=8EEEh,AH=EEh
  4269. ----------13A0--SI4358-----------------------
  4270. INT 13 - Super PC Kwik - GET RESIDENT CODE SEGMENT
  4271.     AH = A0h
  4272.     SI = 4358h
  4273. Return: AX = segment of resident code
  4274. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC Kwik, and thus
  4275.       supports this call
  4276. SeeAlso: INT 16/AX=FFA5h/CX=1111h
  4277. ----------13A1--SI4358-----------------------
  4278. INT 13 - Super PC Kwik - FLUSH CACHE
  4279.     AH = A1h
  4280.     SI = 4358h
  4281. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC Kwik, and thus
  4282.       supports this call
  4283. SeeAlso: INT 16/AX=FFA5h/CX=FFFFh
  4284. ----------13A2--SI4358-----------------------
  4285. INT 13 - Super PC Kwik - ???
  4286.     AH = A2h
  4287.     SI = 4358h
  4288.     ???
  4289. Return: ???
  4290. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC Kwik, and thus
  4291.       supports this call
  4292. ----------13A5-------------------------------
  4293. INT 13 - Super PC Kwik - ???
  4294.     AH = A5h
  4295.     SI = ???
  4296. Return: AX = ???
  4297.     SI = ???
  4298. Note:    called when a program terminates but stays resident (see INT 21/AH=31h)
  4299. ----------13AD-------------------------------
  4300. INT 13 - Priam HARD DISK CONTROLLER???
  4301.     AH = ADh
  4302.     ???
  4303. Return: ???
  4304. Note:    this call is made from Priam's EFMT.EXE (low-level formatter), probably
  4305.       to check the ROM type on the controller for their hard disk kits
  4306. SeeAlso: AH=70h
  4307. ----------13B0--SI4358-----------------------
  4308. INT 13 - Super PC Kwik - ???
  4309.     AH = B0h
  4310.     SI = 4358h
  4311.     ???
  4312. Return: ???
  4313. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC Kwik, and thus
  4314.       supports this call
  4315. ----------13EE-------------------------------
  4316. INT 13 - SWBIOS - SET 1024 CYLINDER FLAG
  4317.     AH = EEh
  4318.     DL = drive number (80h, 81h)
  4319. Return: CF clear
  4320.        AH = 00h
  4321. Notes:    the following INT 13 call will interpret the cylinder number as 1024
  4322.       less than the desired cylinder
  4323.     flag cleared by all INT 13 calls except AH=EEh
  4324.     SWBIOS is a TSR by Ontrack Computer Systems; Disk Manager also supports
  4325.       these calls
  4326.     also supported by HyperDisk v4.01+ and PC-Cache v5.5+, in order to allow
  4327.       caching of drives using SWBIOS to access more than 1024 cylinders
  4328. SeeAlso: AH=F9h,AH=FEh,INT 16/AX=FFA5h/CX=1111h,INT 2F/AH=DFh
  4329. ----------13F9-------------------------------
  4330. INT 13 - SWBIOS - INSTALLATION CHECK
  4331.     AH = F9h
  4332.     DL = drive number (80h,81h)
  4333. Return: CF clear 
  4334.         DX = configuration word
  4335.         bit 15 set if other SWBIOS extensions available
  4336.     CF set on error
  4337. Note:    SWBIOS is a TSR by Ontrack Computer Systems; Disk Manager also supports
  4338.       these calls
  4339. SeeAlso: AH=EEh
  4340. ----------13FE-------------------------------
  4341. INT 13 - SWBIOS - GET EXTENDED CYLINDER COUNT
  4342.     AH = FEh
  4343.     DL = drive number (80h, 81h)
  4344. Return: CF clear
  4345.     DX = number of cylinders beyond 1024 on drive
  4346. Notes:    standard INT 13/AH=08h will return a cylinder count truncated to 1024
  4347.     BIOS without this extension would return count modulo 1024
  4348.     SWBIOS is a TSR by Ontrack Computer Systems; Disk Manager also supports
  4349.       these calls
  4350. SeeAlso: AH=EEh
  4351. ----------14---------------------------------
  4352. INT 14 - SERIAL I/O- Digiboard DigiCHANNEL PC/X* Extender INT 14 (XAPCM232.SYS)
  4353. Note:    the installation check for this driver is to determine whether the
  4354.       "~DOSXAM~" character device exists
  4355. ----------1400-------------------------------
  4356. INT 14 - SERIAL - INITIALIZE PORT
  4357.     AH = 00h
  4358.     AL = port parameters
  4359.         bits 7-5 data rate (110,150,300,600,1200,2400,4800,9600 bps)
  4360.         bits 4-3 parity (00 or 10 = none, 01 = odd, 11 = even)
  4361.         bit 2    stop bits (set = 2, clear = 1)
  4362.         bits 1-0 data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  4363.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  4364. Return: AH = line status (see AH=03h)
  4365.         FFh if error on Digiboard XAPCM232.SYS
  4366.     AL = modem status (see AH=03h)
  4367. Notes:    default handler is at F000h:E739h in IBM PC and 100% compatible BIOSes
  4368.     since the PCjr supports a maximum of 4800 bps, attempting to set 9600
  4369.       bps will result in 4800 bps
  4370. SeeAlso: AH=04h"SERIAL",AH=04h"MultiDOS",AH=05h"SERIAL",AH=81h"COMM-DRV"
  4371. SeeAlso: AH=82h"COURIERS",AH=8Ch
  4372. ----------1400-------------------------------
  4373. INT 14 - FOSSIL (Fido/Opus/Seadog Standard Interface Level) - INITIALIZE
  4374.     AH = 00h
  4375.     AL = initializing parameters
  4376.         7 - 6 - 5       4 - 3     2      1 - 0
  4377.         -BAUD RATE-       PARITY   STOP   WORD
  4378.                     BITS  LENGTH
  4379.         000 19200 bd   00 none  0: 1  00: 5
  4380.         001 38400 bd   01 odd   1: 2  01: 6
  4381.         010      300 bd   11 even      10: 7
  4382.         011      600 bd          11: 8
  4383.         100     1200 bd
  4384.         101     2400 bd
  4385.         110     4800 bd
  4386.         111     9600 bd (4800 on PCjr)
  4387.     DX = port number (0-3 or FFh if only performing non-I/O setup)
  4388. Return: AH = RS-232 status code bits
  4389.         0: RDA - input data is available in buffer
  4390.         1: OVRN - data has been lost
  4391.         5: THRE - room is available in output buffer
  4392.         6: TSRE - output buffer empty
  4393.     AL = modem status bits
  4394.         3: always 1
  4395.         7: DCD - carrier detect
  4396. SeeAlso: AH=05h"FOSSIL",AH=81h"COMM-DRV",AH=82h"COURIERS"
  4397. ----------1401-------------------------------
  4398. INT 14 - SERIAL - WRITE CHARACTER TO PORT
  4399.     AH = 01h
  4400.     AL = character to write
  4401.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  4402. Return: AH bit 7 clear if successful
  4403.     AH bit 7 set on error
  4404.     AH bits 6-0 = port status (see AH=03h)
  4405. SeeAlso: AH=02h,AH=0Bh,AH=89h
  4406. ----------1402-------------------------------
  4407. INT 14 - SERIAL - READ CHARACTER FROM PORT
  4408.     AH = 02h
  4409.     DX = port number (00h-03h (04h-43h for Digiboard XAPCM232.SYS))
  4410. Return: AH = line status (see AH=03h)
  4411.     AL = received character if AH bit 7 clear
  4412. Note:    will timeout if DSR is not asserted, even if function 03h returns
  4413.       data ready
  4414. SeeAlso: AH=01h,AH=02h"FOSSIL",AH=84h,AH=FCh
  4415. ----------1402-------------------------------
  4416. INT 14 - FOSSIL - RECEIVE CHARACTER WITH WAIT
  4417.     AH = 02h
  4418.     DX = port number (0-3)
  4419. Return: AL = character received
  4420.     AH = 00h
  4421. SeeAlso: AH=01h,AH=02h"SERIAL"
  4422. ----------1403-------------------------------
  4423. INT 14 - SERIAL - GET PORT STATUS
  4424.     AH = 03h
  4425.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  4426. Return: AH = line status
  4427.         bit 7: timeout
  4428.         6: transmit shift register empty
  4429.         5: transmit holding register empty
  4430.         4: break detected
  4431.         3: framing error
  4432.         2: parity error
  4433.         1: overrun error
  4434.         0: receive data ready
  4435.     AL = modem status
  4436.         bit 7: carrier detect
  4437.         6: ring indicator
  4438.         5: data set ready
  4439.         4: clear to send
  4440.         3: delta carrier detect
  4441.         2: trailing edge of ring indicator
  4442.         1: delta data set ready
  4443.         0: delta clear to send
  4444. SeeAlso: AH=00h,AH=07h"MultiDOS",AH=81h"COURIERS",AX=FD02h
  4445. ----------1404-------------------------------
  4446. INT 14 - SERIAL I/O - EXTENDED INITIALIZE (CONVERTIBLE,PS)
  4447.     AH = 04h
  4448.     AL = break status
  4449.         00h if break
  4450.         01h if no break
  4451.     BH = parity
  4452.         00h no parity
  4453.         01h odd parity
  4454.         02h even parity
  4455.         03h stick parity odd
  4456.         04h stick parity even
  4457.     BL = number of stop bits
  4458.         00h one stop bit
  4459.         01h two stop bits (1.5 if 5 bit word length)
  4460.     CH = word length
  4461.         00h 5 bits
  4462.         01h 6 bits
  4463.         02h 7 bits
  4464.         03h 8 bits
  4465.     CL = bps rate
  4466.         00h 110
  4467.         01h 150
  4468.         02h 300
  4469.         03h 600
  4470.         04h 1200
  4471.         05h 2400
  4472.         06h 4800
  4473.         07h 9600
  4474.         08h 19200
  4475.     DX = port number
  4476. Return: AX = port status code (see AH=00h)
  4477. SeeAlso: AH=00h,AH=1Eh
  4478. ----------1404-------------------------------
  4479. INT 14 - FOSSIL - INITIALIZE DRIVER
  4480.     AH = 04h
  4481.     DX = port number
  4482.     optionally BX=4F50h
  4483.            ES:CX -> byte to be set upon ^C
  4484. Return: AX = 1954h (if successful)
  4485.     BL = maximum function number supported (excluding 7Eh and above)
  4486.     BH = revision of FOSSIL supported
  4487.     DTR is raised
  4488. Note:    the word at offset 6 in the interrupt handler contains 1954h, and the
  4489.       following byte contains the maximum function number supported
  4490. SeeAlso: AH=05h"FOSSIL",AH=1Ch
  4491. ----------1404-------------------------------
  4492. INT 14 - MultiDOS Plus IODRV - INITIALIZE PORT
  4493.     AH = 04h
  4494. Return: port initialized; if Hayes-compatible modem, a connection has been
  4495.       established
  4496. Note:    the port number is stored at offset BEh in the Task Control Block
  4497.       (see INT 15/AH=13h"MultiDOS")
  4498. SeeAlso: AH=00h,AH=05h"MultiDOS",AH=20h"MultiDOS",INT 15/AH=13h"MultiDOS"
  4499. ----------1404-------------------------------
  4500. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE BAUD RATE
  4501.     AH = 04h
  4502.     AL = initializing parameters
  4503.         bits 7-5 unused
  4504.         bits 4,3: parity (00 none, 01 odd, 11 even)
  4505.         bit 2: stop bits (0 = one, 1 = two)
  4506.         bits 1,0: data bits (00 = five, 01 = six, 10 = seven, 11 = eight)
  4507.     BX = baud rate
  4508.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4509. Return: AH = status
  4510.         00h successful
  4511.         FFh error
  4512. SeeAlso: AH=05h"Digiboard"
  4513. ----------1405-------------------------------
  4514. INT 14 - SERIAL I/O - EXTENDED COMMUNICATION PORT CONTROL (CONVERTIBLE,PS)
  4515.     AH = 05h
  4516.     AL = 00h read modem control register
  4517.           Return: BL = modem control register (see below)
  4518.               AH = status
  4519.     AL = 01h write modem control register
  4520.           BL = modem control register
  4521.           bit 0: data terminal ready
  4522.           bit 1: request to send
  4523.           bit 2: OUT1
  4524.           bit 3: OUT2
  4525.           bit 4: LOOP
  4526.           bits 5-7 reserved
  4527.           Return: AX = status
  4528.     DX = port number
  4529. SeeAlso: AH=00h,AH=1Fh
  4530. ----------1405-------------------------------
  4531. INT 14 - FOSSIL - DEINITIALIZE DRIVER
  4532.     AH = 05h
  4533.     DX = port number
  4534. Return: none
  4535.     DTR is not affected
  4536. SeeAlso: AH=00h,AH=04h"FOSSIL",AH=1Dh,AH=8Dh
  4537. ----------1405-------------------------------
  4538. INT 14 - MultiDOS Plus IODRV - READ CHARACTER FROM PORT
  4539.     AH = 05h
  4540.     AL = timeout in seconds (00h = never)
  4541. Return: AL = status
  4542.         00h successful
  4543.         AH = character read
  4544.         01h read error
  4545.         02h timed out
  4546.         other modem status (CTS, DSR) changed
  4547. Note:    the port number is stored at offset BEh in the Task Control Block
  4548. SeeAlso: AH=02h,AH=04h"MultiDOS",AH=06h"MultiDOS",AH=22h"MultiDOS"
  4549. SeeAlso: INT 15/AH=13h"MultiDOS"
  4550. ----------1405-------------------------------
  4551. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE PROTOCOL
  4552.     AH = 05h
  4553.     AL = protocol
  4554.         bits 7-4 unused
  4555.         bit 3: RTS/CTS
  4556.         bit 2: DSR
  4557.         bits 1,0: XON/XOFF
  4558.     BH = new XOFF character (00h = current)
  4559.     BL = new XON character (00h = current)
  4560.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4561. Return: AH = status
  4562.         00h successful
  4563.         FFh error
  4564. SeeAlso: AH=04h"Digiboard"
  4565. ----------1406-------------------------------
  4566. INT 14 - FOSSIL - RAISE/LOWER DTR
  4567.     AH = 06h
  4568.     DX = port
  4569.     AL = DTR state to be set
  4570.         00h = lower
  4571.         01h = raise
  4572. SeeAlso: AH=1Ah
  4573. ----------1406-------------------------------
  4574. INT 14 - MultiDOS Plus IODRV - WRITE CHARACTER TO PORT
  4575.     AH = 06h
  4576.     AL = character
  4577. Return: AL = status
  4578.         00h successful
  4579. Notes:    the port number is stored at offset BEh in the Task Control Block
  4580.     if output queue is full, the calling task is blocked until the
  4581.       character can be stored
  4582. SeeAlso: AH=01h,AH=04h"MultiDOS",AH=05h"MultiDOS",AH=21h"MultiDOS"
  4583. SeeAlso: INT 15/AH=13h"MultiDOS"
  4584. ----------1407-------------------------------
  4585. INT 14 - FOSSIL - RETURN TIMER TICK PARAMETERS
  4586.     AH = 07h
  4587. Return: AL = timer tick interrupt number
  4588.     AH = ticks per second on interrupt number in AL
  4589.     DX = approximate number of milliseconds per tick
  4590. SeeAlso: AH=16h
  4591. ----------1407-------------------------------
  4592. INT 14 - MultiDOS Plus IODRV - GET PORT STATUS
  4593.     AH = 07h
  4594. Return: CL = modem status (see AH=03h)
  4595.     CH = character at head of input queue (if any)
  4596.     DX = number of characters in input queue
  4597. Note:    the port number is stored at offset BEh in the Task Control Block
  4598. SeeAlso: AH=03h,AH=05h"MultiDOS",AH=08h"MultiDOS",AH=09h"MultiDOS"
  4599. SeeAlso: AH=23h"MultiDOS",INT 15/AH=13h"MultiDOS"
  4600. ----------1408-------------------------------
  4601. INT 14 - FOSSIL - FLUSH OUTPUT BUFFER WAITING TILL ALL OUTPUT IS DONE
  4602.     AH = 08h
  4603.     DX = port number
  4604. SeeAlso: AH=09h"FOSSIL"
  4605. ----------1408-------------------------------
  4606. INT 14 - MultiDOS Plus 4.0 IODRV - GET AND RESET PORT LINE STATUS
  4607.     AH = 08h
  4608. Return: AL = line status (see AH=03h)
  4609.     AH destroyed
  4610. Notes:    the port number is stored at offset BEh in the Task Control Block
  4611.     on every line status change, the line status is ORed with the line
  4612.       status accumulator; this function returns the accumulator and clears
  4613.       it
  4614. SeeAlso: AH=03h,AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  4615. ----------1408-------------------------------
  4616. INT 14 - Digiboard DigiCHANNEL PC/X* - ALTERNATE STATUS CHECK
  4617.     AH = 08h
  4618.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4619. Return: AH = RS232 status bits (see AH=03h)
  4620.     ZF set if no characters queued
  4621.     ZF clear if character available
  4622.         AL = next character
  4623. SeeAlso: AH=03h,AH=09h"Digiboard"
  4624. ----------1409-------------------------------
  4625. INT 14 - FOSSIL - PURGE OUTPUT BUFFER THROWING AWAY ALL PENDING OUTPUT
  4626.     AH = 09h
  4627.     DX = port number
  4628. SeeAlso: AH=08h"FOSSIL",AH=0Ah"FOSSIL",AH=88h
  4629. ----------1409-------------------------------
  4630. INT 14 - MultiDOS Plus IODRV - RESET PORT STATUS
  4631.     AH = 09h
  4632. Return: modem status byte cleared
  4633. Note:    the port number is stored at offset BEh in the Task Control Block
  4634. SeeAlso: AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  4635. ----------1409-------------------------------
  4636. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR BUFFERS
  4637.     AH = 09h
  4638.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4639. Return: AH = status
  4640.         00h successful
  4641.         FFh error
  4642. SeeAlso: AH=08h"Digiboard",AH=0Ah"Digiboard",AH=10h"Digiboard"
  4643. ----------140A-------------------------------
  4644. INT 14 - FOSSIL - PURGE INPUT BUFFER THROWING AWAY ALL PENDING INPUT
  4645.     AH = 0Ah
  4646.     DX = port number
  4647. SeeAlso: AH=09h"FOSSIL",AH=85h
  4648. ----------140A-------------------------------
  4649. INT 14 - Digiboard DigiCHANNEL PC/X* - INPUT QUEUE CHECK
  4650.     AH = 0Ah
  4651.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4652. Return: AX = number of characters available in buffer
  4653. SeeAlso: AH=09h"Digiboard",AH=0Dh"Digiboard"
  4654. ----------140B-------------------------------
  4655. INT 14 - FOSSIL - TRANSMIT NO WAIT
  4656.     AH = 0Bh
  4657.     AL = character
  4658.     DX = port number
  4659. Return: AX = 0000h character not accepted
  4660.        = 0001h character accepted
  4661. SeeAlso: AH=01h
  4662. ----------140C-------------------------------
  4663. INT 14 - FOSSIL - NON-DESTRUCTIVE READ AHEAD
  4664.     AH = 0Ch
  4665.     DX = port number
  4666. Return: AX = FFFFh character not available
  4667.     AX = 00xxh character xx available
  4668. SeeAlso: AH=20h"FOSSIL"
  4669. ----------140D-------------------------------
  4670. INT 14 - FOSSIL - KEYBOARD READ WITHOUT WAIT
  4671.     AH = 0Dh
  4672. Return: AX = FFFFh character not available
  4673.        = xxyyh standard IBM-style scan code
  4674. SeeAlso: AH=0Eh
  4675. ----------140D-------------------------------
  4676. INT 14 - Digiboard DigiCHANNEL PC/X* - GET POINTER TO CH_KEY_RDY FLAG
  4677.     AH = 0Dh
  4678.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4679. Return: ES:BX -> CH_KEY_RDY flag
  4680. SeeAlso: AH=0Ah"Digiboard"
  4681.  
  4682. Values for CH_KEY_RDY flag:
  4683.  00h    receive buffer empty
  4684.  FFh    characters available
  4685. ----------140E-------------------------------
  4686. INT 14 - FOSSIL - KEYBOARD READ WITH WAIT
  4687.     AH = 0Eh
  4688. Return: AX = xxyyh standard IBM-style scan code
  4689. SeeAlso: AH=0Dh"FOSSIL"
  4690. ----------140E-------------------------------
  4691. INT 14 - Digiboard DigiCHANNEL PC/X* - WRITE STRING
  4692.     AH = 0EH
  4693.     CX = number of characters to write
  4694.     ES:BX -> string
  4695.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4696. Return: AX = number of characters actually written
  4697.     ZF clear if successful
  4698.     ZF set on error
  4699. SeeAlso: AH=0Fh"Digiboard"
  4700. ----------140F-------------------------------
  4701. INT 14 - FOSSIL - ENABLE/DISABLE FLOW CONTROL
  4702.     AH = 0Fh
  4703.     AL = bit mask describing flow control requested
  4704.         0: xon/xoff on transmit (watch for xoff while sending)
  4705.         1: CTS/RTS (CTS on transmit/RTS on receive)
  4706.         2: reserved
  4707.         3: xon/xoff on receive (send xoff when buffer near full)
  4708.         4-7: all 1
  4709.     DX = port number
  4710. SeeAlso: AH=10h"FOSSIL"
  4711. ----------140F-------------------------------
  4712. INT 14 - Digiboard DigiCHANNEL PC/X* - READ STRING
  4713.     AH = 0Fh
  4714.     CX = number of characters to read
  4715.     ES:BX -> buffer
  4716.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4717. Return: AX = number of characters read
  4718.     ZF clear if successful
  4719.     ZF set on error (line status or wrong number of characters)
  4720. SeeAlso: AH=0Eh"Digiboard"
  4721. ----------1410-------------------------------
  4722. INT 14 - FOSSIL - EXTENDED ^C/^K CHECKING AND TRANSMIT ON/OFF
  4723.     AH = 10h
  4724.     AL = bit mask
  4725.         0: enable/disable ^C/^K checking
  4726.         1: enable/disable the transmitter
  4727.     DX = port number
  4728. SeeAlso: AH=0Fh"FOSSIL"
  4729. ----------1410-------------------------------
  4730. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR RECEIVE BUFFER
  4731.     AH = 10h
  4732.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4733. Return: AH = status
  4734.         00h successful
  4735.         FFh error
  4736. SeeAlso: AH=09h"Digiboard",AH=11h"Digiboard"
  4737. ----------1411-------------------------------
  4738. INT 14 - FOSSIL - SET CURRENT CURSOR LOCATION
  4739.     AH = 11h
  4740.     DH = row
  4741.     DL = column
  4742. Note:    this is the same as INT 10/AH=02h
  4743. SeeAlso: AH=12h"FOSSIL"
  4744. ----------1411-------------------------------
  4745. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR TRANSMIT BUFFER
  4746.     AH = 11h
  4747.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4748. Return: AH = status
  4749.         00h successful
  4750.         FFh error
  4751. SeeAlso: AH=09h"Digiboard",AH=10h"Digiboard"
  4752. ----------1412-------------------------------
  4753. INT 14 - FOSSIL - READ CURRENT CURSOR LOCATION
  4754.     AH = 12h
  4755. Return: DH = row
  4756.     DL = column
  4757. Note:    this is the same as INT 10/AH=03h
  4758. SeeAlso: AH=11h"FOSSIL"
  4759. ----------1412-------------------------------
  4760. INT 14 - Digiboard DigiCHANNEL PC/X* - GET TRANSMIT BUFFER FREE SPACE
  4761.     AH = 12h
  4762.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4763. Return: AX = number of bytes free
  4764. SeeAlso: AH=0Ah"Digiboard"
  4765. ----------1413-------------------------------
  4766. INT 14 - FOSSIL - SINGLE CHARACTER ANSI WRITE TO SCREEN
  4767.     AH = 13h
  4768.     AL = character
  4769. Note:    should not be called if it is unsafe to call DOS
  4770. SeeAlso: AH=15h
  4771. ----------1414-------------------------------
  4772. INT 14 - FOSSIL - ENABLE OR DISABLE WATCHDOG PROCESSING
  4773.     AH = 14h
  4774.     AL = 01h enable watchdog
  4775.          00h disable watchdog
  4776.     DX = port number
  4777. ----------1415-------------------------------
  4778. INT 14 - FOSSIL - WRITE CHARACTER TO SCREEN USING BIOS SUPPORT ROUTINES
  4779.     AH = 15h
  4780.     AL = character
  4781. SeeAlso: AH=13h
  4782. ----------1416-------------------------------
  4783. INT 14 - FOSSIL - INSERT/DELETE FUNCTION FROM TIMER TICK CHAIN
  4784.     AH = 16h
  4785.     AL = function
  4786.         00h = delete
  4787.         01h = add
  4788.     ES:DX -> routine to call
  4789. Return: AX = status
  4790.         0000h successful
  4791.         0001h unsuccessful
  4792. SeeAlso: AH=07h"FOSSIL"
  4793. ----------1416-------------------------------
  4794. INT 14 - Digiboard DigiCHANNEL PC/X* - CCB COMMAND
  4795.     AH = 16h
  4796.     AL = CCB command number (see below)
  4797.     BL = byte 2
  4798.     BH = byte 3
  4799.     CL = byte 1 (for all channel functions except 4Eh and 4Fh)
  4800.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4801. Return: AH = status
  4802.         00h successful
  4803.         FFh error
  4804. SeeAlso: AH=18h"Digiboard"
  4805.  
  4806. Values for CCB command number:
  4807.  40h Set Receive Mid Water Mark
  4808.  41h Set Receive High Water Mark
  4809.  42h Flush Receive Buffer
  4810.  43h Flush Transmit Buffer
  4811.  44h Transmit Pause
  4812.  45h Transmit Resume
  4813.  46h Set Interrupt to Host Mask
  4814.  47h Set Baud, Data, Stop and Parity
  4815.  48h Send Break
  4816.  49h Set Modem Lines
  4817.  4Ah Set Break Count
  4818.  4Bh Set Handshake
  4819.  4Ch Set Xon/Xoff Characters
  4820.  4Dh Set Transmit Mid Water Mark
  4821.  4Eh IRQ Polling Timer to Host
  4822.  4Fh Buffer Set All
  4823.  50h Port On
  4824.  51h Port Off
  4825.  52h Receive Pause
  4826.  53h Special Character Interrupt
  4827.  54h RS-422 Enable
  4828. ----------1417-------------------------------
  4829. INT 14 - FOSSIL - REBOOT SYSTEM
  4830.     AH = 17h
  4831.     AL = method
  4832.         00h = cold boot
  4833.         01h = warm boot
  4834. SeeAlso: INT 19
  4835. ----------1418-------------------------------
  4836. INT 14 - FOSSIL - READ BLOCK
  4837.     AH = 18h
  4838.     CX = maximum number of characters to transfer
  4839.     DX = port number
  4840.     ES:DI -> user buffer
  4841. Return: AX = number of characters transferred
  4842. SeeAlso: AH=19h"FOSSIL",AH=83h"COURIERS",AX=FF02h,INT 6B/AX=0100h
  4843. ----------1418-------------------------------
  4844. INT 14 - Digiboard DigiCHANNEL PC/X* - SEND BIOS COMMAND
  4845.     AH = 18h
  4846.     ES:BX -> 16-byte command string
  4847.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4848. Return: AH = status
  4849.         00h successful
  4850.         80h timeout
  4851.     AL = mailbox status
  4852.         00h no errors
  4853.         8Xh BIOS error
  4854.     ES:BX buffer filled in with mailbox string
  4855.     ZF clear if no errors
  4856.     ZF set if either status byte contains an error code
  4857. SeeAlso: AH=16h"Digiboard"
  4858. ----------1419-------------------------------
  4859. INT 14 - FOSSIL - WRITE BLOCK
  4860.     AH = 19h
  4861.     CX = maximum number of characters to transfer
  4862.     DX = port number
  4863.     ES:DI -> user buffer
  4864. Return: AX = number of characters transferred
  4865. SeeAlso: AH=18h"FOSSIL",AH=86h,INT 6B/AX=0000h
  4866. ----------1419-------------------------------
  4867. INT 14 - Digiboard DigiCHANNEL PC/X* - SPECIAL CHARACTER INTERRUPT
  4868.     AH = 19h
  4869.     BL = flag
  4870.         00h disable special character interrupt
  4871.         FFh enable interrupt
  4872.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4873. Return: AH = status
  4874.         00h successful    
  4875.         FFh failed
  4876. SeeAlso: AH=1Ah"Digiboard"
  4877. ----------141A-------------------------------
  4878. INT 14 - FOSSIL - BREAK BEGIN OR END
  4879.     AH = 1Ah
  4880.     AL = 00h stop sending 'break'
  4881.          01h start sending 'break'
  4882.     DX = port number
  4883. SeeAlso: AH=06h"FOSSIL",AH=8Ah,AH=FAh
  4884. ----------141A-------------------------------
  4885. INT 14 - Digiboard DigiCHANNEL PC/X - SPECIAL CHARACTER FLAG/COUNTER
  4886.     AH = 1Ah
  4887.     BX = subfunction
  4888.         00h return pointer to special character flag byte
  4889.         01h return pointer to special character counter word
  4890.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  4891. Return: ES:BX -> special character flag or counter
  4892. Notes:    flag is FFh if one or more special characters are in the receive
  4893.       buffer; it is 00h and the counter is invalid if no special characters
  4894.       are in the receive buffer
  4895.     counter (if valid) contains the number of characters in the receive
  4896.       buffer up to and including the last-received special character
  4897. ----------141B-------------------------------
  4898. INT 14 - FOSSIL - RETURN INFORMATION ABOUT THE DRIVER
  4899.     AH = 1Bh
  4900.     DX = port number
  4901.     CX = size of user buffer
  4902.     ES:DI -> user buffer for driver info (see below)
  4903. Return: AX = number of characters transferred
  4904.     CX = 3058h ("0X") (X00 FOSSIL only)
  4905.     DX = 2030h (" 0") (X00 FOSSIL only)
  4906.  
  4907. Format of driver info:
  4908. Offset    Size    Description
  4909.  00h    WORD    size of structure in bytes
  4910.  02h    BYTE    FOSSIL spec driver conforms to
  4911.  03h    BYTE    revision level of this specific driver
  4912.  04h    DWORD    pointer to ASCIZ identification string
  4913.  08h    WORD    size of the input buffer
  4914.  0Ah    WORD    number of bytes left in buffer
  4915.  0Ch    WORD    size of the output buffer
  4916.  0Eh    WORD    number of bytes left in buffer
  4917.  10h    BYTE    width of screen
  4918.  11h    BYTE    length of screen
  4919.  12h    BYTE    actual baud rate, computer to modem
  4920. ----------141C-------------------------------
  4921. INT 14 - X00 FOSSIL - ACTIVATE PORT
  4922.     AH = 1Ch
  4923.     DX = port number
  4924. Return: AX = 1954h if successful
  4925.     BL = maximum function number supported (not including 7Eh and above)
  4926.     BH = revision of FOSSIL specification supported
  4927. Note:    this is a duplicate of AH=04h, so that AH=04h may be made compatible
  4928.       with the PS/2 BIOS in a future release
  4929. SeeAlso: AH=04h"FOSSIL",AH=1Dh
  4930. ----------141D-------------------------------
  4931. INT 14 - X00 FOSSIL - DEACTIVATE PORT
  4932.     AH = 1Dh
  4933.     DX = port number
  4934. Return: none
  4935. Notes:    this is a duplicate of AH=05h, so that AH=05h may be made compatible
  4936.       with the PS/2 BIOS in a future release
  4937.     ignored if the port was never activated with AH=04h or AH=1Ch
  4938. SeeAlso: AH=05h"FOSSIL",AH=1Ch
  4939. ----------141E-------------------------------
  4940. INT 14 - X00 FOSSIL - EXTENDED LINE CONTROL INITIALIZATION
  4941.     AH = 1Eh
  4942.     AL = break status
  4943.         00h if break
  4944.         01h if no break
  4945.     BH = parity
  4946.         00h no parity
  4947.         01h odd parity
  4948.         02h even parity
  4949.         03h stick parity odd
  4950.         04h stick parity even
  4951.     BL = number of stop bits
  4952.         00h one stop bit
  4953.         01h two stop bits (1.5 if 5 bit word length)
  4954.     CH = word length
  4955.         00h 5 bits
  4956.         01h 6 bits
  4957.         02h 7 bits
  4958.         03h 8 bits
  4959.     CL = bps rate
  4960.         00h 110
  4961.         01h 150
  4962.         02h 300
  4963.         03h 600
  4964.         04h 1200
  4965.         05h 2400
  4966.         06h 4800
  4967.         07h 9600
  4968.         08h 19200
  4969.     DX = port number
  4970. Return: AX = port status code (see AH=00h)
  4971. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=04h call
  4972.     if the port was locked at X00 load time, the appropriate parameters are
  4973.       ignored
  4974. SeeAlso: AH=00h,AH=04h"SERIAL I/O"
  4975. ----------141F-------------------------------
  4976. INT 14 - X00 FOSSIL - EXTENDED SERIAL PORT STATUS/CONTROL
  4977.     AH = 1Fh
  4978.     AL = 00h read modem control register
  4979.           Return: BL = modem control register (see below)
  4980.               AH = status
  4981.     AL = 01h write modem control register
  4982.           BL = modem control register
  4983.           bit 0: data terminal ready
  4984.           bit 1: request to send
  4985.           bit 2: OUT1
  4986.           bit 3: OUT2 (interrupts) enabled
  4987.           bit 4: LOOP
  4988.           bits 5-7 reserved
  4989.           Return: AX = status
  4990.     DX = port number
  4991. SeeAlso: AH=00h,AH=05h"SERIAL I/O"
  4992. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=05h call
  4993.     X00 forces BL bit 3 set (interrupts cannot be disabled)
  4994. ----------1420-------------------------------
  4995. INT 14 - X00 FOSSIL - DESTRUCTIVE READ WITH NO WAIT
  4996.     AH = 20h
  4997.     DX = port number
  4998. Return: AH = 00h if character was available
  4999.         AL = next character (removed from receive buffer)
  5000.     AX = FFFFh if no character available
  5001. SeeAlso: AH=0Ch,AH=21h"X00"
  5002. ----------1420-------------------------------
  5003. INT 14 - Alloy MW386 - ATTACH LOGICAL COMMUNICATIONS PORT TO PHYSICAL PORT
  5004.     AH = 20h
  5005.     AL = logical port (01h COM1, 02h COM2)
  5006.     DX = physical port number
  5007. Return: AX = status
  5008.         0000h successful
  5009.         FFFFh failed
  5010. SeeAlso: AH=21h"Alloy",AH=22h"Alloy",AH=23h"Alloy",INT 17/AH=8Bh"Alloy"
  5011. ----------1420-------------------------------
  5012. INT 14 - MultiDOS Plus - INITIALIZE PORT
  5013.     AH = 20h
  5014.     AL = port parameters (see AH=00h"SERIAL")
  5015.     DX = port number (0-3)
  5016. Return: AH = status
  5017.         00h successful
  5018.         41h no such port
  5019.         64h monitor mode already active
  5020. SeeAlso: AH=00h"SERIAL",AH=04h"MultiDOS",AH=21h"MultiDOS",AH=23h"MultiDOS"
  5021. ----------1421-------------------------------
  5022. INT 14 - X00 FOSSIL - STUFF RECEIVE BUFFER
  5023.     AH = 21h
  5024.     AL = character
  5025.     DX = port number
  5026. Notes:    the given character is inserted at the end of the receive buffer as if
  5027.       it had just arrived from the serial port; all normal receive
  5028.       processing (XON/XOFF, ^C/^K) is performed on the character
  5029.     fully re-entrant
  5030. SeeAlso: AH=20h"X00"
  5031. ----------1421-------------------------------
  5032. INT 14 - Alloy MW386 v1.x only - RELEASE PHYSICAL COMMUNICATIONS PORT
  5033.     AH = 21h
  5034.     DX = physical port number
  5035. Return: AX = status
  5036.         0000h successful
  5037.         FFFFh failed
  5038. SeeAlso: AH=20h"Alloy",AH=22h"Alloy"
  5039. ----------1421-------------------------------
  5040. INT 14 - MultiDOS Plus - TRANSMIT CHARACTER
  5041.     AH = 21h
  5042.     AL = character to send
  5043.     DX = port number
  5044. Return: AH = status
  5045.         00h successful
  5046.         39h no DSR or CTS
  5047.         3Ch no DSR
  5048.         3Bh no CTS
  5049.         41h no such port
  5050.         42h monitor mode not active
  5051.         97h timed out
  5052. Note:    monitor mode must have been turned on with AH=24h before calling
  5053. SeeAlso: AH=20h"MultiDOS",AH=22h"MultiDOS",AH=24h"MultiDOS"
  5054. ----------1422-------------------------------
  5055. INT 14 - Alloy MW386 v2+ - RELEASE LOGICAL COMMUNICATIONS PORT
  5056.     AH = 22h
  5057.     AL = logical port (01h COM1, 02h COM2)
  5058. Return: AX = status (0000h successful)
  5059. SeeAlso: AH=20h"Alloy",AH=21h"Alloy"
  5060. ----------1422-------------------------------
  5061. INT 14 - MultiDOS Plus - RECEIVE CHARACTER
  5062.     AH = 22h
  5063.     DX = port number
  5064. Return: AH = status (see also AH=21h"MultiDOS")
  5065.         00h successful
  5066.         AL = character
  5067.         3Dh framing and parity error
  5068.         3Eh overrun error
  5069.         3Fh framing error
  5070.         40h parity error
  5071.         96h ring buffer overflow
  5072. Note:    if no character is available, this function waits until a character
  5073.       arrives or an implementation-dependent timeout elapses
  5074. SeeAlso: AH=20h"MultiDOS",AH=21h"MultiDOS",AH=27h
  5075. ----------1423-------------------------------
  5076. INT 14 - Alloy MW386 v2+ - GET PORT NUMBER FROM LOGICAL PORT ID
  5077.     AH = 23h
  5078.     AL = logical port (01h COM1, 02h COM2)
  5079.     DH = user ID
  5080.     DL = process ID (DH,DL both FFh for current task)
  5081. Return: AL = MW386 port mode
  5082.         bit 0: port is shared (spooler only)
  5083.         1: port is spooled instead of direct (spooler only)
  5084.         2: port is assigned as logical COM device, not in spooler
  5085.         3: port is free
  5086.     CX = MW386 port number
  5087.     DH = owner's user ID
  5088.     DL = owner's task ID
  5089. SeeAlso: AH=20h"Alloy",INT 17/AH=8Bh"Alloy"
  5090. ----------1423-------------------------------
  5091. INT 14 - MultiDOS Plus - GET PORT STATUS
  5092.     AH = 23h
  5093.     DX = port number
  5094. Return: AH = line status (see AH=03h)
  5095.     AL = modem status (see AH=03h)
  5096. SeeAlso: AH=03h,AH=07h"MultiDOS",AH=20h"MultiDOS"
  5097. ----------1424-------------------------------
  5098. INT 14 - Alloy MW386 v2+ - CHANGE PHYSICAL PORT PARAMETERS
  5099.     AH = 24h
  5100.     CX = physical I/O port number
  5101.     DS:DX -> configuration table (see below)
  5102. Return: AH = 00h
  5103. Note:    invalid port numbers are merely ignored
  5104. SeeAlso: INT 17/AH=96h
  5105.  
  5106. Format of configuration table:
  5107. Offset    Size    Description
  5108.  00h    BYTE    baud rate
  5109.         00h 38400
  5110.         01h 19200
  5111.         02h  9600
  5112.         03h  7200
  5113.         04h  4800
  5114.         05h  3600
  5115.         06h  2400
  5116.         07h  2000
  5117.         08h  1200
  5118.         09h   600
  5119.         0Ah   300
  5120.         0Bh   150
  5121.         0Ch   134.5
  5122.  01h    BYTE    data bits (00h=5, 01h=6, 02h=7, 03h=8)
  5123.  02h    BYTE    parity (00h none, 01h odd, 02h even)
  5124.  03h    BYTE    stop bits (00h=1, 01h=2)
  5125.  04h    BYTE    receive flow control
  5126.         00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC, 04h RTS/CTS
  5127.  05h    BYTE    transmit flow control (as for receive)
  5128. ----------1424-------------------------------
  5129. INT 14 - MultiDOS Plus - SET MONITOR MODE
  5130.     AH = 24h
  5131.     AL = port status storage
  5132.         00h single status for entire receive buffer
  5133.         01h separate status kept for each byte in receive buffer
  5134.     DX = port number
  5135. Return: AH = status
  5136.         00h successful
  5137.         3Ah invalid status storage specified
  5138.         41h no such port
  5139.         64h monitor mode already active
  5140. Note:    in monitor mode, MultiDOS redirects all BIOS video output to a serial
  5141.       port
  5142. SeeAlso: AH=20h"MultiDOS",AH=25h
  5143. ----------1425-------------------------------
  5144. INT 14 - MultiDOS Plus - CLEAR BUFFERS
  5145.     AH = 25h
  5146.     AL = function
  5147.         00h only clear buffers
  5148.         01h clear buffers and deactivate
  5149.     DX = port number
  5150. Return: AH = status
  5151.         00h successful
  5152.         3Ah invalid function
  5153.         41h no such port
  5154.         42h monitor mode not active
  5155. SeeAlso: AH=20h"MultiDOS",AH=24h"MultiDOS"
  5156. ----------1427-------------------------------
  5157. INT 14 - MultiDOS Plus - GET BUFFER CHARACTER COUNT
  5158.     AH = 27h
  5159.     DX = port number
  5160. Return: AH = status
  5161.         00h successful
  5162.         41h no such port
  5163.         42h monitor mode not active
  5164.     AL = number of characters in receive buffer
  5165. ----------147E-------------------------------
  5166. INT 14 - FOSSIL - INSTALL AN EXTERNAL APPLICATION FUNCTION
  5167.     AH = 7Eh
  5168.     AL = code assigned to external application (80h-BFh)
  5169.         80h reserved for communications FOSSIL
  5170.         81h video FOSSIL
  5171.         82h reserved for keyboard FOSSIL
  5172.         83h reserved for system FOSSIL
  5173.     ES:DX -> entry point
  5174. Return: AX = 1954h
  5175.     BL = code assigned to application (same as input AL)
  5176.     DH = 00h failed
  5177.          01h successful
  5178. SeeAlso: AH=7Fh,AH=80h"FOSSIL",AX=8100h,AH=82h"FOSSIL",AH=83h"FOSSIL"
  5179. ----------147F-------------------------------
  5180. INT 14 - FOSSIL - REMOVE AN EXTERNAL APPLICATION FUNCTION
  5181.     AH = 7Fh
  5182.     AL = code assigned to external application
  5183.     ES:DX -> entry point
  5184. Return: AX = 1954h
  5185.     BL = code assigned to application (same as input AL)
  5186.     DH = 00h failed
  5187.          01h successful
  5188. SeeAlso: AH=7Eh
  5189. ----------1480-------------------------------
  5190. INT 14 - COMMUNICATIONS FOSSIL
  5191.     AH = 80h
  5192. SeeAlso: AH=7Eh
  5193. ----------1480-------------------------------
  5194. INT 14 - COURIERS.COM - INSTALLATION CHECK
  5195.     AH = 80h
  5196. Return: AH = E8h if loaded
  5197. Note:    COURIERS is a TSR utility by PC Magazine
  5198. ----------1481-------------------------------
  5199. INT 14 - COURIERS.COM - CHECK IF PORT BUSY
  5200.     AH = 81h
  5201.     AL = port number (1-4)
  5202. Return: AH = 00h port available
  5203.          01h port exists but already in use
  5204.          02h port nonexistent
  5205. Note:    COURIERS is a TSR utility by PC Magazine
  5206. SeeAlso: AH=83h,AH=8Dh
  5207. ----------1481-------------------------------
  5208. INT 14 - Egberto Willies COMM-DRV - EXTENDED INITIALIZATION
  5209.     AH = 81h
  5210.     BX:DI -> port control block
  5211. Return: ???
  5212. SeeAlso: AH=00h
  5213.  
  5214. Format of port control block:
  5215. Offset    Type    Description
  5216.  00h    WORD    port IO address
  5217.  02h    WORD    port IRQ
  5218.  04h    WORD    baud rate
  5219.  06h    WORD    parity
  5220.  08h    WORD    data bits
  5221.  0Ah    WORD    stop bits
  5222.  0Ch    WORD    break status
  5223.             0000h off
  5224.  0Eh    WORD    flow control protocol
  5225.  10h    BYTE    input block
  5226.  11h    BYTE    output block
  5227.  12h    WORD    low threshold
  5228.  14h    WORD    high threshold
  5229.  16h    WORD    segment of buffer
  5230.  18h    WORD    offset of buffer
  5231.  1Ah    WORD    input buffer length
  5232.  1Ch    WORD    output buffer length
  5233.  1Eh    BYTE    auxiliary address
  5234.  1Fh    BYTE    spare
  5235.  20h  4 WORDs    spares
  5236. ----------148100-----------------------------
  5237. INT 14 - VIDEO FOSSIL - RETURN VFOSSIL INFORMATION
  5238.     AX = 8100h
  5239.     ES:DI -> buffer for VFOSSIL information (see below)
  5240. Return: AX = 1954h if installed
  5241. SeeAlso: AH=7Eh,AX=8101h
  5242.  
  5243. Format of VFOSSIL information:
  5244. Offset    Size    Description
  5245.  00h    WORD    size of information in bytes, including this field
  5246.  02h    WORD    VFOSSIL major version
  5247.  04h    WORD    VFOSSIL revision level
  5248.  06h    WORD    highest VFOSSIL application function supported
  5249. ----------148101-----------------------------
  5250. INT 14 - VIDEO FOSSIL - OPEN VFOSSIL
  5251.     AX = 8101h
  5252.     ES:DI -> buffer for application function table (see below)
  5253.     CX = length of buffer in bytes
  5254. Return: AX = 1954h if installed
  5255.         BH = highest VFOSSIL application function supported
  5256. Note:    the number of initialized pointers in the application function table
  5257.       will never exceed CX/4; if the buffer is large enough, BH+1 pointers
  5258.       will be initialized
  5259. SeeAlso: AX=8102h
  5260.  
  5261. Format of application function table:
  5262. Offset    Size    Description
  5263.  00h    DWORD    -> function to query current video mode (VioGetMode)
  5264.  04h    DWORD    -> function to set video mode (VioSetMode)
  5265.  08h    DWORD    -> function to query hardware config (VioGetConfig)
  5266.  0Ch    DWORD    -> function to write data in TTY mode (VioWrtTTY)
  5267.  10h    DWORD    -> function to get current ANSI state (VioGetANSI)
  5268.  14h    DWORD    -> function to set new ANSI state (VioSetANSI)
  5269.  18h    DWORD    -> function to get curr cursor position (VioGetCurPos)
  5270.  1Ch    DWORD    -> function to set cursor position (VioSetCurPos)
  5271.  20h    DWORD    -> function to get cursor shape (VioGetCurType)
  5272.  24h    DWORD    -> function to set cursor shape (VioSetCurType)
  5273.  28h    DWORD    -> function to scroll screen up (VioScrollUp)
  5274.  2Ch    DWORD    -> function to scroll screen down (VioScrollDn)
  5275.  30h    DWORD    -> function to read cell string from screen (VioReadCellStr)
  5276.  34h    DWORD    -> function to read char string from screen (VioReadCharStr)
  5277.  38h    DWORD    -> function to write a cell string (VioWrtCellStr)
  5278.  3Ch    DWORD    -> function to write char string, leaving attr (VioWrtCharStr)
  5279.  40h    DWORD    -> function to write char string,const attr (VioWrtCharStrAttr)
  5280.  44h    DWORD    -> function to replicate an attribute (VioWrtNAttr)
  5281.  48h    DWORD    -> function to replicate a cell (VioWrtNCell)
  5282.  4Ch    DWORD    -> function to replicate a character (VioWrtNChar)
  5283.  
  5284. Format of video mode data structure:
  5285. Offset    Size    Description
  5286.  00h    WORD    length of structure including this field
  5287.  02h    BYTE    mode characteristics
  5288.         bit 0: clear if MDA, set otherwise
  5289.         bit 1: graphics mode
  5290.         bit 2: color disabled (black-and-white)
  5291.  03h    BYTE    number of colors supported (1=2 colors, 4=16 colors, etc)
  5292.  04h    WORD    number of text columns
  5293.  06h    WORD    number of text rows
  5294.  08h    WORD    reserved
  5295.  0Ah    WORD    reserved
  5296.  0Ch    DWORD    reserved
  5297.  
  5298. Format of video configuration data:
  5299. Offset    Size    Description
  5300.  00h    WORD    structure length including this field
  5301.  02h    WORD    adapter type
  5302.         00h monochrome/printer
  5303.         01h CGA
  5304.         02h EGA
  5305.         03h VGA
  5306.         07h 8514/A
  5307.  04h    WORD    display type
  5308.         00h monochrome
  5309.         01h color
  5310.         02h enhanced color
  5311.         09h 8514
  5312.  06h    DWORD    adapter memory size
  5313.  
  5314. Format of cursor type record:
  5315. Offset    Size    Description
  5316.  00h    WORD    cursor start line
  5317.  02h    WORD    cursor end line
  5318.  04h    WORD    cursor width (always 01h)
  5319.  06h    WORD    cursor attribute (FFFFh = hidden)
  5320.  
  5321. Call VioGetMode with:
  5322.     STACK:    WORD    VIO handle (must be 00h)
  5323.         DWORD    pointer to video mode data structure (see above)
  5324. Return: AX = error code (00h, 74h, 17Eh, 1B4h)
  5325.         0000h successful
  5326.         0074h internal VIO failure
  5327.         0163h unsupported mode
  5328.         0166h invalid row value
  5329.         0167h invalid column value
  5330.         017Eh buffer too small
  5331.         01A5h invalid VIO parameter
  5332.         01B4h invalid VIO handle
  5333.  
  5334. Call VioSetMode with:
  5335.     STACK:    WORD    VIO handle (must be 00h)
  5336.         DWORD    pointer to video mode data structure (see above)
  5337. Return: AX = error code (00h, 74h, 163h, 17Eh, 1A5h, 1B4h) (see above)
  5338.  
  5339. Call VioGetConfig with:
  5340.     STACK:    WORD    VIO handle (must be 00h)
  5341.         DWORD    pointer to video configuration data buffer (see above)
  5342. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see above)
  5343.  
  5344. Call VioWrtTTY with:
  5345.     STACK:    WORD    VIO handle (must be 00h)
  5346.         WORD    length of string
  5347.         DWORD    pointer to character string to be written to screen
  5348. Return: AX = error code (00h, 74h, 1B4h) (see above)
  5349. Notes:    write wraps at end of line and terminates if it reaches end of screen
  5350.     in ANSI mode, ANSI control sequences are interpreted, and this func is
  5351.       not required to be reentrant; in non-ANSI mode, the function is
  5352.       reentrant and may be called from within an MSDOS function call
  5353.  
  5354. Call VioGetANSI with:
  5355.     STACK:    WORD    VIO handle (must be 00h)
  5356.         DWORD    pointer to WORD which will be set to 00h if ANSI is off
  5357.             or 01h if ANSI is on
  5358. Return: AX = error code (00h, 74h, 1B4h) (see above)
  5359.  
  5360. Call VioSetANSI with:
  5361.     STACK:    WORD    VIO handle (must be 00h)
  5362.         DWORD    pointer to WORD indicating new state of ANSI
  5363.             00h off
  5364.             01h on
  5365. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see above)
  5366.  
  5367. Call VioGetCurPos with:
  5368.     STACK:    WORD    VIO handle (must be 00h)
  5369.         DWORD    pointer to WORD to hold current cursor column (0-based)
  5370.         DWORD    pointer to WORD to hold current cursor row (0-based)
  5371. Return: AX = error code (00h, 74h, 1B4h) (see above)
  5372.  
  5373. Call VioSetCurPos with:
  5374.     STACK:    WORD    VIO handle (must be 00h)
  5375.         WORD    cursor column
  5376.         WORD    cursor row
  5377. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  5378. Note:    if either coordinate is invalid, the cursor is not moved
  5379.  
  5380. Call VioGetCurType with:
  5381.     STACK:    WORD    VIO handle (must be 00h)
  5382.         DWORD    pointer to cursor type record (see above)
  5383. Return: AX = error code (00h, 74h, 1B4h) (see above)
  5384.  
  5385. Call VioSetCurType with:
  5386.     STACK:    WORD    VIO handle (must be 00h)
  5387.         DWORD    pointer to cursor type record (see above)
  5388. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see above)
  5389.  
  5390. Call VioScrollUp with:
  5391.     STACK:    WORD    VIO handle (must be 00h)
  5392.         DWORD    pointer to char/attr cell for filling emptied rows
  5393.         WORD    number or rows to scroll (FFFFh = clear area)
  5394.         WORD    right column of scroll area
  5395.         WORD    bottom row of scroll area
  5396.         WORD    left column of scroll area
  5397.         WORD    top row of scroll area
  5398. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  5399.  
  5400. Call VioScrollDn with:
  5401.     STACK:    WORD    VIO handle (must be 00h)
  5402.         DWORD    pointer to char/attr cell for filling emptied rows
  5403.         WORD    number or rows to scroll (FFFFh = clear area)
  5404.         WORD    right column of scroll area
  5405.         WORD    bottom row of scroll area
  5406.         WORD    left column of scroll area
  5407.         WORD    top row of scroll area
  5408. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  5409.  
  5410. Call VioReadCellStr with:
  5411.     STACK:    WORD    VIO handle (must be 00h)
  5412.         WORD    column at which to start reading
  5413.         WORD    row at which to start reading
  5414.         DWORD    pointer to WORD containing length of buffer in bytes
  5415.             on return, WORD contains number of bytes actually read
  5416.         DWORD    pointer to buffer for cell string
  5417. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see above)
  5418.  
  5419. Call VioReadCharStr with:
  5420.     STACK:    WORD    VIO handle (must be 00h)
  5421.         WORD    column at which to start reading
  5422.         WORD    row at which to start reading
  5423.         DWORD    pointer to WORD containing length of buffer in bytes
  5424.             on return, WORD contains number of bytes actually read
  5425.         DWORD    pointer to buffer for character string
  5426. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see above)
  5427.  
  5428. Call VioWrtCellStr with:
  5429.     STACK:    WORD    VIO handle (must be 00h)
  5430.         WORD    column at which to start writing
  5431.         WORD    row at which to start writing
  5432.         WORD    length of cell string in bytes
  5433.         DWORD    pointer to cell string to write
  5434. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  5435. Note:    write wraps at end of line and terminates if it reaches end of screen
  5436.  
  5437. Call VioWrtCharStr with:
  5438.     STACK:    WORD    VIO handle (must be 00h)
  5439.         WORD    column at which to start writing
  5440.         WORD    row at which to start writing
  5441.         WORD    length of character string
  5442.         DWORD    pointer to character string to write
  5443. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  5444. Note:    write wraps at end of line and terminates if it reaches end of screen
  5445.  
  5446. Call VioWrtCharStrAttr with:
  5447.     STACK:    WORD    VIO handle (must be 00h)
  5448.         DWORD    pointer to attribute to be applied to each character
  5449.         WORD    column at which to start writing
  5450.         WORD    row at which to start writing
  5451.         WORD    length of character string
  5452.         DWORD    pointer to character string to write
  5453. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  5454. Note:    write wraps at end of line and terminates if it reaches end of screen
  5455.  
  5456. Call VioWrtNAttr with:
  5457.     STACK:    WORD    VIO handle (must be 00h)
  5458.         WORD    column at which to start writing
  5459.         WORD    row at which to start writing
  5460.         WORD    number of times to write attribute
  5461.         DWORD    pointer to display attribute to replicate
  5462. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  5463. Note:    write wraps at end of line and terminates if it reaches end of screen
  5464.  
  5465. Call VioWrtNCell with:
  5466.     STACK:    WORD    VIO handle (must be 00h)
  5467.         WORD    column at which to start writing
  5468.         WORD    row at which to start writing
  5469.         WORD    number of times to write cell
  5470.         DWORD    pointer to cell to replicate
  5471. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  5472. Note:    write wraps at end of line and terminates if it reaches end of screen
  5473.  
  5474. Call VioWrtNChar with:
  5475.     STACK:    WORD    VIO handle (must be 00h)
  5476.         WORD    column at which to start writing
  5477.         WORD    row at which to start writing
  5478.         WORD    number of times to write character
  5479.         DWORD    pointer to character to replicate
  5480. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  5481. Note:    write wraps at end of line and terminates if it reaches end of screen
  5482. ----------148102-----------------------------
  5483. INT 14 - VIDEO FOSSIL - CLOSE VFOSSIL
  5484.     AX = 8102h
  5485. Return: AX = 1954h
  5486. Note:    terminates all operations; after this call, the video FOSSIL may either
  5487.       be removed from memory or reinitialized
  5488. SeeAlso: AX=8101h,AX=8103h
  5489. ----------148103-----------------------------
  5490. INT 14 - VIDEO FOSSIL - UNINSTALL
  5491.     AX = 8103h
  5492. Return:    AX = 1954h
  5493. Note:    this is an extension to the VFOSSIL spec by Bob Hartman's VFOS_IBM
  5494. ----------1482-------------------------------
  5495. INT 14 - KEYBOARD FOSSIL
  5496.     AH = 82h
  5497. SeeAlso: AH=7Eh
  5498. ----------1482-------------------------------
  5499. INT 14 - COURIERS.COM - CONFIGURE PORT
  5500.     AH = 82h
  5501.     AL = port number (1-4)
  5502.     BX = speed (bps)
  5503.     CX = bit flags
  5504.         bit 0: enable input flow control
  5505.         bit 1: enable output flow control
  5506.         bit 2: use X.PC protocol (not yet implemented)
  5507. SeeAlso: AH=00h,AH=8Ch,INT 7Ah"X.PC"
  5508. ----------1483-------------------------------
  5509. INT 14 - SYSTEM FOSSIL
  5510.     AH = 83h
  5511. SeeAlso: AH=7Eh
  5512. ----------1483-------------------------------
  5513. INT 14 - COURIERS.COM - START INPUT
  5514.     AH = 83h
  5515.     ES:BX -> circular input buffer
  5516.     CX = length of buffer 
  5517.         (should be at least 128 bytes if input flow control enabled)
  5518. SeeAlso: AH=18h,AH=87h,AH=8Dh,AH=A5h"BAPI"
  5519. ----------1484-------------------------------
  5520. INT 14 - COURIERS.COM - READ CHARACTER
  5521.     AH = 84h
  5522. Return: ZF set if no characters available
  5523.     ZF clear
  5524.        AL = character
  5525.        AH = modem status bits
  5526.         bit 7: set on input buffer overflow
  5527. SeeAlso: AH=02h,AH=86h,AH=89h
  5528. ----------1485-------------------------------
  5529. INT 14 - COURIERS.COM - FLUSH PENDING INPUT
  5530.     AH = 85h
  5531. SeeAlso: AH=0Ah,AH=88h
  5532. ----------1486-------------------------------
  5533. INT 14 - COURIERS.COM - START OUTPUT
  5534.     AH = 86h
  5535.     ES:BX -> output buffer
  5536.     CX = length of output buffer
  5537. SeeAlso: AH=19h,AH=83h"COURIERS",AH=A4h"BAPI"
  5538. ----------1487-------------------------------
  5539. INT 14 - COURIERS.COM - OUTPUT STATUS
  5540.     AH = 87h
  5541. Return: AX = number of unsent characters
  5542. ----------1488-------------------------------
  5543. INT 14 - COURIERS.COM - ABORT OUTPUT
  5544.     AH = 88h
  5545. SeeAlso: AH=09h,AH=85h
  5546. ----------1489-------------------------------
  5547. INT 14 - COURIERS.COM - SEND SINGLE CHARACTER
  5548.     AH = 89h
  5549.     CL = character to send
  5550. SeeAlso: AH=01h,AH=84h
  5551. ----------148A-------------------------------
  5552. INT 14 - COURIERS.COM - SEND BREAK
  5553.     AH = 8Ah
  5554. SeeAlso: AH=89h,AH=FAh
  5555. ----------148C-------------------------------
  5556. INT 14 - COURIERS.COM - SET SPEED
  5557.     AH = 8Ch
  5558.     BX = speed in bps
  5559. SeeAlso: AH=00h,AH=82h"COURIERS"
  5560. ----------148D-------------------------------
  5561. INT 14 - COURIERS.COM - DECONFIGURE PORT
  5562.     AH = 8Dh
  5563. SeeAlso: AH=82h"COURIERS"
  5564. ----------14A0-------------------------------
  5565. INT 14 - 3com BAPI SERIAL I/O - CONNECT TO PORT
  5566.     AH = A0h
  5567.     ???
  5568. Return: ???
  5569. SeeAlso: AH=A1h"BAPI"
  5570. ----------14A0--CXFFFF-----------------------
  5571. INT 14 - Interconnections Inc. TES - INSTALLATION CHECK/STATUS REPORT
  5572.     AH = A0h
  5573.     CX = FFFFh
  5574. Return: CF clear if successful
  5575.         AX = 5445h ('TE')
  5576.         CX <> FFFFh
  5577.         DX = port number
  5578.     CF set on error
  5579. Note:    TES is a network serial port emulation program
  5580. SeeAlso: AH=A1h"TES"
  5581. ----------14A1-------------------------------
  5582. INT 14 - 3com BAPI SERIAL I/O - DISCONNECT FROM PORT
  5583.     AH = A1h
  5584.     ???
  5585. Return: ???
  5586. SeeAlso: AH=A0h"BAPI"
  5587. ----------14A1-------------------------------
  5588. INT 14 - Interconnections Inc. TES - GET LIST OF SESSIONS WITH STATUS
  5589.     AH = A1h
  5590. Return: CX = number of active sessions
  5591.     ES:SI -> status array (see below)
  5592. SeeAlso: AH=A2h"TES",AH=A3h"TES"
  5593.  
  5594. Format of status array entry:
  5595. Offset    Size    Description
  5596.  00h    BYTE    status
  5597.  01h    WORD    offset of name
  5598. ----------14A2-------------------------------
  5599. INT 14 - Interconnections Inc. TES - GET LIST OF SERVER NAMES
  5600.     AH = A2h
  5601. Return:    CX = number of servers
  5602.     ES:SI -> array of offsets from ES for server names
  5603. SeeAlso: AH=A1h"TES"
  5604. ----------14A3-------------------------------
  5605. INT 14 - Interconnections Inc. TES - START A NEW SESSION
  5606.     AH = A3h
  5607.     ES:SI -> ???
  5608. Return: CF clear if successful
  5609.         AX = 5445h ('TE')
  5610.         CX <> FFFFh
  5611.         DX = port number
  5612.     CF set on error
  5613. SeeAlso: AH=A1h"TES",AH=A4h"TES",AH=A6h"TES"
  5614. ----------14A4-------------------------------
  5615. INT 14 - 3com BAPI SERIAL I/O - WRITE BLOCK
  5616.     AH = A4h
  5617.     CX = length
  5618.     DH = session number (00h)
  5619.     ES:BX -> buffer
  5620. Return: CX = number of bytes sent
  5621. SeeAlso: AH=19h,AH=86h,AH=A5h"BAPI"
  5622. ----------14A4-------------------------------
  5623. INT 14 - Interconnections Inc. TES - HOLD CURRENTLY ACTIVE SESSION
  5624.     AH = A4h
  5625.     ???
  5626. Return: ???
  5627. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  5628. ----------14A5-------------------------------
  5629. INT 14 - 3com BAPI SERIAL I/O - READ BLOCK
  5630.     AH = A5h
  5631.     CX = length
  5632.     DH = session number (00h)
  5633.     ES:BX -> buffer
  5634. Return: CX = number of bytes read
  5635. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A4h"BAPI",AX=FF02h
  5636. ----------14A5-------------------------------
  5637. INT 14 - Interconnections Inc. TES - RESUME A SESSION
  5638.     AH = A5h
  5639.     AL = session number
  5640. Return: ???
  5641. SeeAlso: AH=A4h"TES",AH=A6h"TES"
  5642. ----------14A6-------------------------------
  5643. INT 14 - 3com BAPI SERIAL I/O - SEND SHORT BREAK
  5644.     AH = A6h
  5645.     DH = session number (00h)
  5646. SeeAlso: AH=1Ah,AH=8Ah,AH=FAh
  5647. ----------14A6-------------------------------
  5648. INT 14 - Interconnections Inc. TES - DROP A SESSION
  5649.     AH = A6h
  5650.     AL = session number
  5651. Return: AH = status
  5652.         00h successful
  5653.         else error
  5654. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  5655. ----------14A7-------------------------------
  5656. INT 14 - 3com BAPI SERIAL I/O - READ STATUS
  5657.     AH = A7h
  5658.     ???
  5659. Return: ???
  5660. ----------14A7-------------------------------
  5661. INT 14 - Interconnections Inc. TES - SWITCH TO NEXT ACTIVE SESSION
  5662.     AH = A7h
  5663.     ???
  5664. Return: ???
  5665. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  5666. ----------14A8-------------------------------
  5667. INT 14 - Interconnections Inc. TES - SEND STRING TO COMMAND INTERPRETER
  5668.     AH = A8h
  5669.     AL = 00h no visible response
  5670.     ES:SI -> ASCIZ command
  5671. Return: ???
  5672. ----------14AF00BXAAAA-----------------------
  5673. INT 14 - 3com BAPI SERIAL I/O - INSTALLATION CHECK
  5674.     AX = AF00h
  5675.     BX = AAAAh
  5676. Return: AX = AF01h if installed
  5677. ----------14B0-------------------------------
  5678. INT 14 - 3com BAPI SERIAL I/O - ENABLE/DISABLE "ENTER COMMAND MODE" CHARACTER
  5679.     AH = B0h
  5680.     AL = 00h disable
  5681.        = 01h enable
  5682. ----------14B1-------------------------------
  5683. INT 14 - 3com BAPI SERIAL I/O - ENTER COMMAND MODE
  5684.     AH = B1h
  5685. ----------14F0F0-----------------------------
  5686. INT 14 - ASAP v1.0 - ???
  5687.     AX = F0F0h
  5688.     DX = ???
  5689.     ???
  5690. Return: ???
  5691. Note:    ASAP (Automatic Screen Access Program) is a shareware screen reader by
  5692.       MicroTalk
  5693. SeeAlso: AX=F0F1h
  5694. ----------14F0F1DX0000-----------------------
  5695. INT 14 - ASAP v1.0 - INSTALLATION CHECK
  5696.     AX = F0F1h
  5697.     DX = 0000h
  5698. Return: DX = segment of resident code
  5699.        = 0000h if not installed
  5700. Note:    ASAP (Automatic Screen Access Program) is a shareware screen reader by
  5701.       MicroTalk
  5702. SeeAlso: AX=F0F0h
  5703. ----------14F4FF-----------------------------
  5704. INT 14 - IBM/Yale EBIOS SERIAL I/O - INSTALLATION CHECK
  5705.     AX = F4FFh
  5706.     DX = port (00h-03h)
  5707. Return: CF clear if present
  5708.         AX = 0000h
  5709.     CF set if not present
  5710.         AX <> 0000h
  5711. ----------14F9-------------------------------
  5712. INT 14 - IBM/Yale EBIOS SERIAL I/O - REGAIN CONTROL
  5713.     AH = F9h
  5714.     DX = port (00h-03h)
  5715. ----------14FA-------------------------------
  5716. INT 14 - IBM/Yale EBIOS SERIAL I/O - SEND BREAK
  5717.     AH = FAh
  5718.     DX = port (00h-03h)
  5719. SeeAlso: AH=1Ah,AH=8Ah
  5720. ----------14FB-------------------------------
  5721. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET OUTGOING MODEM SIGNALS
  5722.     AH = FBh
  5723.     AL = modem control register
  5724.         bit 0: data terminal ready
  5725.         1: request to send
  5726.         2: OUT1
  5727.         3: OUT2
  5728.         4: loopback
  5729.         bits 5-7 unused
  5730.     DX = port (00h-03h)
  5731. ----------14FC-------------------------------
  5732. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ CHARACTER, NO WAIT
  5733.     AH = FCh
  5734.     DX = port (00h-03h)
  5735. Return: AH = RS232 status bits (see AH=00h)
  5736.     AL = character
  5737. SeeAlso: AH=02h,AH=0Ch,AX=FF02h
  5738. ----------14FD02-----------------------------
  5739. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ STATUS
  5740.     AX = FD02h
  5741. Return: CX = number of characters available
  5742. ----------14FF02-----------------------------
  5743. INT 14 - IBM/Yale EBIOS SERIAL I/O - BUFFERED READ
  5744.     AX = FF02h
  5745.     CX = length
  5746.     DX = port (00h-03h)
  5747.     ES:BX -> buffer
  5748. Return: CX = number of characters read
  5749. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh
  5750. ---------------------------------------------
  5751.